- SP在xml中存储数据,适合数据量小的情况使用
- 在第一次读取数据时需要阻塞等待xml文件加载完成,如果数据量很大,速度会很慢
- SP每次都是全量写入,也就是说SP在每次写入数据之前都会把xml文件改名为备份文件,然后再将内存中的数据与新增数据合并再写入到新的xml文件中,如果执行成功再将备份xml文件删除,这样效率太低了。
- SP存储数据时是一次性将所有数据全量存储在xml中,而不是增量存储(即使只新增接一个键值对数据)。
- commit和apply的区别是commit返回值是boolean代表是否提交成功,apply没有返回值,commit是在当前线程中写入磁盘文件说法是不准确的,大多数场景下commit和apply都是通过另起单线程写到磁盘文件中的。
- 每次apply的提交都会造成QueueWork.add(Runnable),在异步线程写入磁盘文件完成后会调用QueueWork.remove(Runnable),观察线上ANR发现有大量QueueWoker.waitToFinish()的异常信息,所以需要实现自己的SP(继承自系统SharePreferenceImpl,在apply方法中不再调用QueueWork添加写磁盘Runnable,而是创建线程池开启线程去执行Runnable,这样就不会造成阻塞)。
SharePreference总结
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- SP 存储相关内容。 有关 SharedPreferences 的简单使用: 以下代码的源码基于 android-...
- ⊙作者:jiang111⊙github地址:https://github.com/jiang111⊙原文地址:ht...
- SharedPreferences anr 原因以及避免方案 技术背景: AuthMode 和SDK 使用了系统默...
- 这是别人在面试过程中遇到的一个问题, SharedPreferences的apply()为什么没有返回结果.根据官...