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. 在操作书籍信息表的地方获取数据库表的持久化对象
相关推荐
云空几秒前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
暮毅5 分钟前
10.Node.js连接MongoDb
数据库·mongodb·node.js
wowocpp8 分钟前
ubuntu 22.04 server 格式化 磁盘 为 ext4 并 自动挂载 LTS
服务器·数据库·ubuntu
成富30 分钟前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
songqq2731 分钟前
SQL题:使用hive查询各类型专利top 10申请人,以及对应的专利申请数
数据库·sql
计算机学长felix35 分钟前
基于SpringBoot的“校园交友网站”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·毕业设计·交友
HerayChen1 小时前
HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
android·macos·智能手机
顾北川_野1 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
hairenjing11231 小时前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小码的头发丝、1 小时前
Django中ListView 和 DetailView类的区别
数据库·python·django