google改进Android资料存储方法,推出用来代替原本SharedPreferences的Jetpack DataStore测试版,Jetpack DataStore是以Kotlin协程和Flow功能为基础,并提供了Proto DataStore和Preferences DataStore两种实例,Google提到,由于Jetpack DataStore的资料以异步、一致和交易的方式存储,克服了SharedPreferences大多数的缺点 。
文章插图
Proto DataStore使用Protocol Buffers(Protobufs),专门用来存储类型对象,而Preferences DataStore则可储存键值对,官方比较了SharedPreferences与这两种新存储实例的差异(下图),新的实例功能明显较多,除了具有资料交易API,能够强健地保证资料一致性之外,也能够使用Flow,更好地支持异步存储 。
Google解释只有SharedPreferences才有,重新实例拿掉同步API的原因,官方提到,乍看之下,同步API可以安全地在UI线程上执行调用,但实际上线程仍可以执行磁盘I/O,而且Apply又会阻挡fsync上的UI线程,因此每当服务与活动启动或是停止时,就会触发暂停fsync调用 。虽然Google在新的实例拿掉了同步API,不过在Jetpack DataStore中,Proto DataStore和Preferences DataStore却可以安全地在UI线程上调用函数 。
虽然两个新实例都可以用来存储资料,但是却使用不同的存储方式,Preference DataStore更像是原本的SharedPreferences,无法定义架构,也无法确定以正确的类型访问键值,而Proto DataStore则让开发者能以Protocol Buffers定义架构,且因为Protobufs可以保留强类型资料,与XML和其他格式相比,Protobufs更小更简单,因此Google表示,虽然Proto DataStore需要开发者学习新的串行化机制,但是Proto DataStore带来强类型架构的优势 。
DataStore仅适合用来存储小且简单的资料集,当需要部分更新、参照完整性或是支持大型且复杂的资料集等功能,则Google不建议使用DataStore,推荐开发者使用Room 。目前DataStore仍处于Alpha测试阶段,开发者可以先查看Google提供的范例程序,同时准备迁移,开发者可以使用DataStore构建器,自动化迁移过程,但必需要注意的是,迁移程序必须在任何DataStore资料访问发生前执行 。
【Google推Android小资料存储新方法】
推荐阅读
- 存储卡|读取最快95MB/s:创见推出MacBook Pro定制存储卡
- 洗面奶|十款热门洗面奶评测大全 性价比最好的洗面奶推荐
- 国产智能手环哪个品牌好 智能手环品牌推荐
- 护肤品|刘畊宏推荐的5款男士护肤品 健身加护肤 让你变成真男神
- 谷歌智能手表androidwear介绍
- 刘邦为什么把儿女踹下车 刘邦逃跑时把孩子推下车,是谁救的
- 20款50-500元电脑音箱推荐
- 喝茶养生养生茶饮推荐,缘生堂养生茶推荐给大家
- 最好的轮胎是什么?
- Docker-For-Pentest的渗透测试镜像推荐