APP下载

Google推Android小资料储存新方法Jetpack DataStore

消息来源:baojiabao.com 作者: 发布时间:2026-09-08

报价宝综合消息Google推Android小资料储存新方法Jetpack DataStore

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资料存取发生前执行。

2020-09-07 17:49:00

相关文章