SharePreference相关
2021-12-26 本文已影响0人
Infinity_空
SharePreference是一个轻量级的存储类,一般用来保存应用的配置参数。其本质是通过一个XML文件存储键值对(key-value)
-
SP的提交一般有两个api,一个是commit,一个是apply。
- commit会阻塞当前线程,有返回值,可以根据commit返回的结果,做一些异常处理操作
- apply是会启动Runnable做异步提交,没有返回值。
-
如果SP太大时,可能会导致一些问题:
- 初始化时,SP会读取xml文件,可能会阻塞主线程,使页面卡顿、掉帧。
- 解析SP的时候,会产生大量的临时对象,导致频繁GC
- SP的key-value会全部存在于内存中,占用大量的内存
-
使用建议:
- 不要存放过多过大的key-value
- 如果有很多的key-value,需要进行分类存储,避免读取过多无用的key-value
- 读取频繁的key-value和较少使用的key-value也分开存储。
- 提交时,尽量进行批量提交
-
SP通过在读写时,给map加入同一把锁,所以它是线程安全的,但是它不是进程安全的,在多进程读写时,会造成数据丢失,或者是无法读取最新最近的数据。
-
SP的替代方案:
- Google的替代方案:DataStore(有待发展)
- 微信替代方案:MMKV(主流)