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

  • 外部存储私有空间
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简化数据库操作

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

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

Room是谷歌公司推出的数据库处理框架,该框架同样基于SQLite,但它通过注解技术极大简化了数据库操作,减少了原来相当一部分工作量。

在使用Room之前,要先修改模块的build.gradle文件,添加对应的依赖。

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

  1. 编写书籍信息表对应的实体类,该类添加@Entity注解
  2. 编写书籍信息表对应的持久化类,该类添加@Dao注解
  3. 编写书籍信息表对应的数据库类,该类从RoomDatabase派生而来,并添加@Database注解
  4. 在自定义的Application类中声明书籍数据库的唯一实例
  5. 在操作书籍信息表的地方获取数据库表的持久化对象
相关推荐
戏谑3 分钟前
Android 常用布局
android·view
小汤猿人类12 分钟前
open Feign 连接池(性能提升)
数据库
阳冬园33 分钟前
mysql数据库 主从同步
数据库·主从同步
Mr.132 小时前
数据库的三范式是什么?
数据库
Cachel wood2 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Python之栈2 小时前
【无标题】
数据库·python·mysql
风_流沙2 小时前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
亽仒凣凣2 小时前
Windows安装Redis图文教程
数据库·windows·redis
亦世凡华、2 小时前
MySQL--》如何在MySQL中打造高效优化索引
数据库·经验分享·mysql·索引·性能分析
YashanDB2 小时前
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
数据库·yashandb·崖山数据库