文章目录
共享参数SharedPreference
- SharedPreference是Android的一个轻量级存储工具,采用的存储结构是K-V的键值对式方式。
- 共享参数的存储介质是符合XML规范的配置文件,保存路径是:/data/data/应用包名/shared_prefs/文件名.xml
1.共享参数用法
- 简单且孤立的数据,若是复杂且相互间有关的数据,则要保存在数据库中
- 文本形式的数据,若是二进制数据,则要保存在文件中
- 需要持久化存储的数据,在App退出后再次启动时,之前保存的数据仍然有效
实际开发中,共享参数经常存储的数据有App的个性化配置信息、用户使用App的行为信息、临时需要保存的片段信息等。
2.实现记住密码功能
3.利用设备浏览器寻找共享参数文件
数据库SQLite
1.SQL基本语法
2.数据库管理器SQLitedatabase
SQLiteDatabase是SQLite的数据库管理类,它提供了若干操作数据库表的API,常用的方法有3类:
1.管理类,用于数据库层面。
- openDatabase:打开指定路径的数据库
- isOpen:判断数据库是否已打开
- close:关闭数据库
- getVersion:获取数据库的版本号
- setVersion:设置数据库的版本号
2.事务类,用于事务层面的操作。
- beginTransaction:开启事务
- setTTransationSuccessful:设置事务的成功标志
- endTransaction:结束事务
3.数据处理类,用于数据表层面的操作。
- execSQL:执行拼接好SQL控制语句
- delete:删除符合条件的记录
- update:更新符合条件的记录
- insert:插入一条记录
- query:执行查询操作,返回结果集的游标
- rawQuery:执行拼接好的SQL查询语句,返回结果集的游标
3.数据库帮助器SQLiteOpenHelper
SQLiteOpenHelper是Android提供的数据库辅助工具,用于指导开发者进行SQLite合理使用。
SQLiteOpenHelper具体的使用步骤如下:
- 新建一个继承自SQLiteOpenHelper的数据库操作类,提示重写onCreate和onUpgrade两个方法
- 封装保证数据库安全的必要方法
- 提供对表记录进行增加、删除、修改、查询的操作方法
4.优化记住密码功能
存储卡文件操作
1.私有存储空间和公共存储空间
Android把外部存储分成了两块区域,一块是所有应用均可访问的公共空间,另一块是只有应用自己才可访问的私有空间。
2.在存储卡上读写文本文件
- 外部存储私有空间
java
directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString();
- 外部存储公共空间
java
directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
- 内部存储私有空间
java
directory = getFilesDir().toString();
3.在存储卡上读写图片文件
Android的位图工具是Bitmap,App读写Bitmap可以使用性能更好的BufferedOutputStream和BufferedInputStream。
Android还提供了BitmapFactory工具用于读写各种来源的图片,相关方法如下:
- decodeResource:该方法可从资源文件中读取图片信息
- decodeFile:该方法可将指定路径的图片读取到Bitmap对象
- decodeStream:该方法从输入流中读取位图数据
应用组件Application
1.Appication生命周期
Application是Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿整个生命周期。
- onCreate:App启动时
- onTerminate:App终止时调用
- onConfigurationChanged:配置改变时调用
2.利用Application操作全局变量
全局的意思是其他代码都可以引用该变量,因此全局变量是共享数据和消息传递的好帮手。
适合在Application中保存的全局变量主要有下面3类数据:
- 会频繁读取的信息,如用户名、手机号等
- 不方便由意图传递的数据,例如位图对象、非字符串类型的集合对象等
- 容易频繁分配内存而导致内存泄漏的对象,如Handler对象等
3.利用Room简化数据库操作
使用数据库帮助器编码的时候,开发者每次都的手工实现以下代码逻辑:
- 重写数据库帮助器的onCreate方法,添加该表的建表语句
- 在插入记录之时,必须将数据实例的属性值逐一赋值给该表的各字段
- 在查询记录之时,必须遍历结果集游标,把各字段逐一赋给数据实例
- 每次读写操作之前,都要先开启数据库连接;读写操作之后,又要关闭数据库连接
Room是谷歌公司推出的数据库处理框架,该框架同样基于SQLite,但它通过注解技术极大简化了数据库操作,减少了原来相当一部分工作量。
在使用Room之前,要先修改模块的build.gradle文件,添加对应的依赖。
以录入书籍信息为例,使用Room框架的编码过程分为下列五步:
- 编写书籍信息表对应的实体类,该类添加@Entity注解
- 编写书籍信息表对应的持久化类,该类添加@Dao注解
- 编写书籍信息表对应的数据库类,该类从RoomDatabase派生而来,并添加@Database注解
- 在自定义的Application类中声明书籍数据库的唯一实例
- 在操作书籍信息表的地方获取数据库表的持久化对象