android 数据存储的知识点

简介: android 数据存储的知识点

数据存储

1 、描述一下 d Android 数据持久存储方式?

参考回答:Android 平台实现数据持久存储的常见几种方式: SharedPreferences 存储一种轻型的数据存储方式,本
质是基于 XML 文件存储的 key-value 键值对数据,通常用
来存储一些简单的配置信息(如应用程序的各种配置信
息);
SQLite 数据库存储:一种轻量级嵌入式数据库引擎,它的
运算速度非常快,占用资源很少,常用来存储大量复杂的
关系数据;
ContentProvider:四大组件之一,用于数据的存储和共
享,不仅可以让不同应用程序之间进行数据共享,还可以
选择只对哪一部分数据进行共享,可保证程序中的隐私数
据不会有泄漏风险;
File 文件存储:写入和读取文件的方法和 Java 中实现 I/O
的程序一样;
网络存储:主要在远程的服务器中存储相关数据,用户操
作的相关数据可以同步到服务器上;

2 、 SharedPreferences 的应用场景?注意事项?

参考回答:
SharedPreferences 是一种轻型的数据存储方式,本质是
基于 XML 文件存储的 key-value 键值对数据,通常用来存
储一些简单的配置信息,如
int,String,boolean、
float 和 long;
注意事项:
勿存储大型复杂数据,这会引起内存 GC 、阻塞主线
程使页面卡顿产生 ANR
勿在多进程模式下,操作 Sp
不要多次 edit 和 和 apply ,尽量批量修改一次提交
建议 apply ,少用 commit

3 、SharedPrefrences 的  apply 和 和 commit 有什么区别?

 参考回答:
apply 没有返回值而 t commit 返回 n boolean 表明修改是否提
交成功。
apply 是将修改数据原子提交到内存, , 而后异步真正提交
到硬件磁盘, 而 commit 是 同步的提交到硬件磁盘,因此,
在多个并发的提交 commit 的时候,他们会等待正在处理的
commit 保存到磁盘后在操作,从而降低了效率。而 apply
只是原子的提交到内容,后面有调用 apply 的函数的将会
直接覆盖前面的内存数据,这样从一定程度上提高了很多
效率。
apply 方法不会提示任何失败的提示。由于在一个进程
中,sharedPreference 是单实例,一般不会出现并发冲
突,如果对提交的结果不关心的话,建议使用 apply,当
然需要确保提交成功且有后续操作的话,
还是需要用
commit 的。

4 、了解  SQLite 中的事务操作吗?是如何做的

参考回答:
SQLite 在做 CRDU 操作时都默认开启了事务,然后把 SQL
语句翻译成对应的 SQLiteStatement 并调用其相应的 CRUD
方法,此时整个操作还是在 rollback journal 这个临时文
件上进行,只有操作顺
利完成才会更新 db 数据库,否则会被回滚;

5 、使用 SQLite 做批量操作有什么好的方法吗?

参考回答:
使用 SQLiteDatabase 的 beginTransaction 方法开启一个
事务,将批量操作 SQL 语句转化为 SQLiteStatement 并进
行批量操作,结束后 endTransaction()

6 、如何删除 e SQLite 中表的个别字段

参考回答:
SQLite 数据库只允许增加字段而不允许修改和删除表字
段,只能创建新表保留原有字段,删除原表

7 、使用 e SQLite 时会有哪些优化操作?

参考回答:
使用事务做批量操作
及时关闭 Cursor,避免内存泄露
耗时操作异步化:数据库的操作属于本地 IO 耗时操作,建
议放入异步线程中处理
ContentValues 的容量调整:ContentValues 内部采用
HashMap 来存储 Key-Value 数据,ContentValues 初始容量
为 8,扩容时翻倍。因此建议对 ContentValues 填入的内
容进行估量,设置合理的初始化容量,减少不必要的内部
扩容操作
使用索引加快检索速度:对于查询操作量级较大、业务对
查询要求较高的推荐使用索引

相关文章
|
7月前
|
存储 Java 数据库
Android数据存储:什么是Room Persistence Library?
Android数据存储:什么是Room Persistence Library?
142 0
|
7月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
97 0
|
7月前
|
Android开发 算法 架构师
android的基础ui组件,这些知识点你会吗
android的基础ui组件,这些知识点你会吗
android的基础ui组件,这些知识点你会吗
|
2月前
|
Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
2月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
2月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
|
2月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
31 3
|
2月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
29 2
|
2月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
61 1
|
2月前
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
Android面试高频知识点(1) 图解 Android 事件分发机制
45 1