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. 在操作书籍信息表的地方获取数据库表的持久化对象
相关推荐
whysqwhw2 小时前
安卓图片性能优化技巧
android
薛晓刚2 小时前
当MySQL的int不够用了
数据库
风往哪边走2 小时前
自定义底部筛选弹框
android
SelectDB技术团队3 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光3 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql
小楓12013 小时前
MySQL數據庫開發教學(一) 基本架構
数据库·后端·mysql
Yyyy4823 小时前
MyCAT基础概念
android
染落林间色3 小时前
达梦数据库-实时主备集群部署详解(附图文)手工搭建一主一备数据守护集群DW
数据库·sql
Android轮子哥4 小时前
尝试解决 Android 适配最后一公里
android
颜颜yan_4 小时前
企业级时序数据库选型指南:从传统架构向智能时序数据管理的转型之路
数据库·架构·时序数据库