avatar
文章
98
标签
33
分类
13
首页
归档
标签
分类
友链
关于
Fleming's Blog
搜索
首页
归档
标签
分类
友链
关于

Fleming's Blog

如何创建和使用SQLite数据库
发表于2017-08-13|经验
前言什么是SQLite?SQLite是一款轻型数据库,它遵守ACID,能够嵌入到使用它的应用程序中。作为一个自包含的、基于文件的数据库,SQLite提供了非常出色的工具集能够处理所有类型的数据,与托管在服务器上基于进程的关系型数据库相比它的约束更少,也更易用。 当应用程序使用SQLite时,SQLite并非作为一个独立进程通过某种通信协议(例如socket)与应用程序通信,而是作为应用程序的一部分,应用程序通过调用SQLite的接口直接访问数据文件。 为什么要用 SQLite? 不需要一个单独的服务器进程或操作的系统(无服务器的)。 SQLite 不需要配置,这意味着不需要安装或管理。 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。 SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。 SQLite 是自给自足的,这意味着不需要任何外部的依赖。 SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。 SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。 SQLite 使...
EditText里怎么自带删除按钮
发表于2017-08-11|Code
前言对于普通的编辑框,它的功能就是负责接收用户输入的信息,在实际开发中,常常会有这样的设计,就是在输入内容后,编辑框的内部右侧会出现一个删除按钮,点击后会清空编辑框里的内容,这样的交互是极好的,那这又是怎么实现的呢? 解决思路毫无疑问是——继承自EditText,自定义文本编辑框 为EditText设置addTextChangeListener 创建内部类实现TextWatcher接口,监听输入框文本的变化 改写onTouchEvent事件,点击叉号位置,清空文本 通过setCompoundDrawablesWithIntrinsicBounds方法为EditText设置图片 提示,先准备一张png的图片,由于EditText是继承自TextView的,因此也有setCompoundDrawablesWithIntrinsicBounds方法。 自定义EditTextWithDel类继承自EditText,重写构造函数。 123456789101112131415public EditTextWithDel(Context context) { super(c...
Android中丰富的对话框
发表于2017-08-10|Code
Android中对话框的展示,对人机交互有着重要的意义,常见的对话框包括: 警告对话框 进度对话框 日期选择对话框 时间选择对话框 普通列表对话框 单选列表对话框 多选列表对话框 带图标的列表对话框 对于特殊的对话框形式还可以自定义对话框 下面对这些对话框的使用进行说明: 警告对话框1234567891011121314151617181920212223242526272829private void showAlertDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setIcon(R.mipmap.ic_launcher); builder.setMessage("您有一笔2千万的汇款在处理,请问是您亲自操作的吗?"); builder.setPositiveButton(R.string.con...
关于BroadcastReceiver
发表于2017-08-09|经验
为什么Android要使用各种BroadcastReceiver?前言作为Android四大组件之一的BroadcastReceiver(广播接收者),同Activity(活动)一样,经常被大家用到,网上也是一堆对它的讲解,那么为什么Android要用广播接收者这种机制呢? 作用 跨进程通信:一个 App 可以监听另一个 App 发出的广播(需权限)。 响应系统事件:如开机完成、网络变化、电量低、屏幕开关等。 模块解耦:组件之间无需直接引用,通过广播传递消息。 常见系统广播示例 广播 Action 说明 Intent.ACTION_BOOT_COMPLETED 开机完成 ConnectivityManager.CONNECTIVITY_ACTION 网络状态变化 Intent.ACTION_SCREEN_ON/OFF 屏幕亮/灭 Intent.ACTION_BATTERY_LOW 电量低 广播分为:普通广播和有序广播 Normal broadcasts(普通广播):Normal broadcasts是完全异步的可以同一时间被所有的接收者接收...
如何利用LruCache进行数据缓存
发表于2017-08-08|经验
前言LruCache是什么?最初我也不知道去缓存请求到的数据,直接都是通过http请求,根据得到的返回数据展示到界面上,网络不好时要等待好久请求才能成功,或者干脆就失败了,这样给用户的体验是很不好的。之后在学习中,了解到了Android SDK中有处理缓存的LruCache,这个LruCache是在android.util包下的,是API level 12引入的,对于API level 12之前的系统可以使用support library v4中的LruCache。 LruCache是一个泛型类。 LRU是Least Recently Used的缩写,即“最近最少使用”,说明LRU缓存算法的淘汰策略是把最近最少使用的数据移除,让出内存给最新读取的数据。 它采用的是内存缓存数据,它内部采用一个LinkedHashMap以强引用的方式存储外界的缓存对象。 它是线程安全的。 其中提供了put、get、remove方法来完成缓存的添加、获取和移除操作。 每次添加的缓存对象会置顶,当缓存满时,LruCache会移除较早使用的缓存对象,然后再添加新的缓存对象。 通常我们需要用到的缓存策略...
开发利器之Android Studio
发表于2017-08-07|日常
为什么选择 Android Studio? 官方支持:Google 官方 IDE,第一时间支持新特性(如 Jetpack、Compose)。 强大调试:内置 Layout Inspector、Profiler、APK 分析器。 智能提示:基于 IntelliJ,代码补全、重构、错误检查极佳。 Gradle 集成:灵活构建、依赖管理、多渠道打包。 模拟器快:HAXM 加速,性能接近真机。 必备插件推荐 ADB Idea:一键清理/重启 App。 GsonFormat:JSON 快速生成 Java Bean。 CodeGlance:右侧代码缩略图。 Markdown Support:完美支持 .md 文件预览。 提升效率的快捷键 功能 快捷键(Windows) 查找类 Ctrl + N 查找文件 Ctrl + Shift + N 重构重命名 Shift + F6 生成 Getter/Setter Alt + Insert 快速修复 Alt + Enter 小技巧 使用 TODO 注释,可在 TODO 面板集中管理。 Log.d(T...
Repo常用指令
发表于2017-07-07|Repo
Repo常用指令在使用 Git 进行版本控制时,repo 是一个由 Google 提供的工具,主要用于管理多个 Git 仓库(特别是在 Android 开发中)。它是对 Git 的封装,简化了多仓库项目的管理。 下面是一些常用的 repo 命令及其用途: 🌐 初始化和同步repo init初始化一个新的 repo 客户端。通常会指定一个 manifest 仓库地址。 1repo init -u <manifest仓库URL> [-b <分支名>] [-m <manifest文件名>] 示例: 1repo init -u https://android.googlesource.com/platform/manifest -b main -m default.xml repo sync从远程仓库下载代码并同步到本地。 1repo sync 常用选项: repo sync -c:只同步当前分支。 repo sync -j4:使用 4 个线程并行同步,加快速度。 repo sync --no-tags:不下载标签,节省带宽。 📁 项...
git提交与gerrit代码审查细节
发表于2017-05-29|Git
git提交与gerrit代码审查细节代码拉取和提交 配置config文件12345Host gerrit HostName 10.10.1.127 Port 29418 User 1016739 IdentityFile ~/.ssh/id_ed25519 克隆1git clone "ssh://gerrit/<project path>" my-project && cd my-project && f="$(git rev-parse --git-dir)/hooks/commit-msg"; curl -o "$f" http://10.10.1.127:30090/tools/hooks/commit-msg; chmod +x "$f" 仅克隆某个分支到本地目录1git clone -b <分支名> --single-branch <仓库地址> <目标目录> 代码补充提交12git add .git c...
git补丁
发表于2017-02-25|Git
git补丁在Git中,打patch(生成补丁)和应用patch(应用补丁)是两个常见的操作,主要用于代码的修改分享或版本间的差异同步。下面是具体步骤: 生成Patch(打Patch) 确定变更范围:首先,确保你的工作区是干净的(没有未提交的更改),然后使用git add将你想要包含在补丁中的文件暂存起来。 创建补丁: 如果你只需要针对最后一次提交创建补丁,可以使用如下命令:1git format-patch -1 HEAD 这条命令会为最近的一次提交生成一个补丁文件。 若要为特定的提交ID创建补丁,可以替换HEAD为你想打补丁的提交ID。 如果需要对一系列的提交创建补丁,可以通过指定起始和结束提交ID来完成,例如:1git format-patch sha1^..sha2 如果你已经修改了一些文件,但还不想将这些更改提交到仓库中,并希望为这些未提交的更改创建一个补丁。首先使用git add将某些更改暂存,再使用如下命令,例如:1git diff --cached > staged-changes.patch 应用Patch(应用补丁) 获取补丁文件:确保你已经获得...
strings中的文本替换
发表于2017-02-08|经验
strings中的文本替换 实际开发的过程中我们有时候会遇到,一个TextView里面会遇到会有一个一大串固定的文字,而里面的数字或者个别字需要根据后台的接口而展示的。这个时候我们最简单的方法就是在string.xml文件里 使用 %s、%1$s、%d、%1$d,而在页面展示的时候我们只需要用实际展示的文字或者数据替换掉这些占位符就可以了。 %1$s表示把第一个位置的占位符替换成string类型 %1$d表示把第一个位置的占位符替换成int类型 数字表示替换字符串中第几个被替换的位置,若一个字符串要替换两个int类型,在替换位置分别写%1$d和%2$d. %s 、%d为缩写方式,只替换一个位置,可以这么写。
1…78910
avatar
Fleming Chen
不积跬步无以至千里,不积小流无以成江海。——《荀子·劝学》
文章
98
标签
33
分类
13
Follow Me
公告
欢迎来到我的博客,有任何疑问可以随时联系我交流讨论!
最新文章
音频流处理过程
音频流处理过程2026-01-16
AOIP和VOIP
AOIP和VOIP2026-01-06
AudioFlinger的基本概念
AudioFlinger的基本概念2025-08-28
音频领域基本概念
音频领域基本概念2025-08-20
Unicast、Multicast、Broadcast的含义及关系
Unicast、Multicast、Broadcast的含义及关系2025-08-19
分类
  • ADB9
  • Code19
  • Flutter1
  • Git10
  • Grep1
  • Linux3
  • Repo2
  • Unity 3D1
标签
Handler BroadcastReceiver 缓存 经验 linux Android Studio 代码 MVP Dialog git flutter Message LruCache UI EditText 扩展 学习路线 数据库 架构 系统广播 Markdown SQLite 系统 unity AlertDialog 自学 日常 IDE adb 音频 Android 开发工具 AsyncTask
归档
  • 一月 2026 2
  • 八月 2025 3
  • 七月 2025 5
  • 六月 2025 1
  • 四月 2025 2
  • 十一月 2024 1
  • 七月 2024 2
  • 二月 2024 4
网站信息
文章数目 :
98
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2016 - 2026 By Fleming Chen框架 Hexo 6.1.0|主题 Butterfly 5.5.4
搜索
数据加载中