每日一练 20190525

1.描述一下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没有返回值而commit返回boolean代表修改是否提交成功。
apply是将修改数据原子提交到内存, 然后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,所以,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操做,从而下降了效率。而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从必定程度上提升了不少效率。
apply方法不会提示任何失败的提示。 因为在一个进程中,sharedPreference是单实例,通常不会出现并发冲突,若是对提交的结果不关心的话,建议使用apply,固然须要确保提交成功且有后续操做的话,仍是须要用commit的。

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

参考回答:

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

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

参考回答:

    使用SQLiteDatabase的beginTransaction方法开启一个事务,将批量操做SQL语句转化为SQLiteStatement并进行批量操做,结束后endTransaction()
相关文章
相关标签/搜索