Android数据存储

共享参数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.在存储卡上读写文本文件

  • 外部存储私有空间
directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString();
  • 外部存储公共空间
directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
  • 内部存储私有空间
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简化数据库操作

使用数据库帮助器编码的时候,开发者每次都的手工实现以下代码逻辑:

  1. 重写数据库帮助器的onCreate方法,添加该表的建表语句
  2. 在插入记录之时,必须将数据实例的属性值逐一赋值给该表的各字段
  3. 在查询记录之时,必须遍历结果集游标,把各字段逐一赋给数据实例
  4. 每次读写操作之前,都要先开启数据库连接;读写操作之后,又要关闭数据库连接

Room是谷歌公司推出的数据库处理框架,该框架同样基于SQLite,但它通过注解技术极大简化了数据库操作,减少了原来相当一部分工作量。
在使用Room之前,要先修改模块的build.gradle文件,添加对应的依赖。

以录入书籍信息为例,使用Room框架的编码过程分为下列五步:

  1. 编写书籍信息表对应的实体类,该类添加@Entity注解
  2. 编写书籍信息表对应的持久化类,该类添加@Dao注解
  3. 编写书籍信息表对应的数据库类,该类从RoomDatabase派生而来,并添加@Database注解
  4. 在自定义的Application类中声明书籍数据库的唯一实例
  5. 在操作书籍信息表的地方获取数据库表的持久化对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值