SharePreference相关

2021-12-26  本文已影响0人  Infinity_空

SharePreference是一个轻量级的存储类,一般用来保存应用的配置参数。其本质是通过一个XML文件存储键值对(key-value)

  1. SP的提交一般有两个api,一个是commit,一个是apply。

    • commit会阻塞当前线程,有返回值,可以根据commit返回的结果,做一些异常处理操作
    • apply是会启动Runnable做异步提交,没有返回值。
  2. 如果SP太大时,可能会导致一些问题:

    1. 初始化时,SP会读取xml文件,可能会阻塞主线程,使页面卡顿、掉帧。
    2. 解析SP的时候,会产生大量的临时对象,导致频繁GC
    3. SP的key-value会全部存在于内存中,占用大量的内存
  3. 使用建议:

    1. 不要存放过多过大的key-value
    2. 如果有很多的key-value,需要进行分类存储,避免读取过多无用的key-value
    3. 读取频繁的key-value和较少使用的key-value也分开存储。
    4. 提交时,尽量进行批量提交
  4. SP通过在读写时,给map加入同一把锁,所以它是线程安全的,但是它不是进程安全的,在多进程读写时,会造成数据丢失,或者是无法读取最新最近的数据。

  5. SP的替代方案:

    1. Google的替代方案:DataStore(有待发展)
    2. 微信替代方案:MMKV(主流)
上一篇下一篇

猜你喜欢

热点阅读