2021-08-06 Jetpack之DataStore介绍和工具类的封装,中高级工程师Android开发

本文介绍了Android的Jetpack DataStore,作为SharedPreferences的替代,它解决了SharedPreferences的同步阻塞、类型安全、内存占用和ANR等问题。DataStore基于Flow实现,保证主线程安全性,提供事务处理和数据一致性。同时,提供了工具类封装,方便进行数据的保存和获取。
摘要由CSDN通过智能技术生成

因为getXXX()都是同步的,在主线程调用 get 方法时,同步方法内调用了 wait() 方法,会必须等待

getSharedPreferences()

方法开启的线程读取完数据完毕,才能继续往下执行,会导致主线程阻塞。如果数据量读取的小,并没有什么影响,如果读取的文件较大会导致主线程阻塞。

调用 getSharedPreferences() 方法,最终会调用

SharedPreferencesImpl#startLoadFromDisk() 方法开启一个线程异步读取数据。

(2)SharedPreferences不能保证类型安全

调用 getXXX() 方法的时候,可能会出现 ClassCastException 异常,因为使用相同的 key

进行操作的时候,putXXX 方法可以使用不同类型的数据覆盖掉相同的 key。

(3)SharedPreferences加载的数据会一直留在内存中

通过 getSharedPreferences() 方法加载的数据,最后会将数据存储在静态的成员变量中。 通过静态的 ArrayMap

缓存每一个 SharedPreferences文件,而每个 SharedPreferences文件内容通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值