美文网首页
SharePreference总结

SharePreference总结

作者: ModestStorm | 来源:发表于2022-09-14 12:15 被阅读0次
  1. SP在xml中存储数据,适合数据量小的情况使用
  2. 在第一次读取数据时需要阻塞等待xml文件加载完成,如果数据量很大,速度会很慢
  3. SP每次都是全量写入,也就是说SP在每次写入数据之前都会把xml文件改名为备份文件,然后再将内存中的数据与新增数据合并再写入到新的xml文件中,如果执行成功再将备份xml文件删除,这样效率太低了。
  4. SP存储数据时是一次性将所有数据全量存储在xml中,而不是增量存储(即使只新增接一个键值对数据)。
  5. commit和apply的区别是commit返回值是boolean代表是否提交成功,apply没有返回值,commit是在当前线程中写入磁盘文件说法是不准确的,大多数场景下commit和apply都是通过另起单线程写到磁盘文件中的。
  6. 每次apply的提交都会造成QueueWork.add(Runnable),在异步线程写入磁盘文件完成后会调用QueueWork.remove(Runnable),观察线上ANR发现有大量QueueWoker.waitToFinish()的异常信息,所以需要实现自己的SP(继承自系统SharePreferenceImpl,在apply方法中不再调用QueueWork添加写磁盘Runnable,而是创建线程池开启线程去执行Runnable,这样就不会造成阻塞)。

相关文章

网友评论

      本文标题:SharePreference总结

      本文链接:https://www.haomeiwen.com/subject/ouwtortx.html