美文网首页
Android 架构组件 之DataStore(2) - 对比S

Android 架构组件 之DataStore(2) - 对比S

作者: 行走中的3卡 | 来源:发表于2022-11-04 09:59 被阅读0次

上一篇介绍参考:
Android 架构组件 之 DataStore (1)

1. SharedPreferences 的缺点

(1). apply()看上去可以在UI线程中安全调用的同步 API,但是该 API 实际上执行磁盘 I/O 操作

此外,apply() 会阻断 fsync() 上的UI线程:
每次有服务启动或停止以及每次 activity 在应用中的任何地方启动或停止时,
系统都会触发待处理的 fsync() 调用。
界面线程在 apply() 调度的待处理 fsync() 调用上会被阻断,这通常会导致 ANR。

(2) SharedPreferences 会将 解析错误 作为 运行时异常抛出。

2. Preferences DataStore 与 Proto DataStore 保存数据的方式

(1)Preferences DataStore:根据键访问数据,而无需事先定义架构。( 与 SharedPreferences 一样)
(2)Proto DataStore 使用 协议缓冲区 来定义架构。使用协议缓冲区可持久保留强类型数据。
与 XML 和其他类似的数据格式相比,协议缓冲区速度更快、规格更小、使用更简单,并且更清楚明了。
虽然使用 Proto DataStore 需要学习新的序列化机制(Serializer),但我们认为 Proto DataStore 有着强大的类型优势,值得学习。

3. Room 与 DataStore

如果需要实现部分更新、引用完整性或大型/复杂数据集,应考虑使用 Room,而不是 DataStore。
DataStore 非常适合小型或简单的数据集,但不支持 部分更新或 参照完整性。

参考文献:
https://developer.android.com/codelabs/android-preferences-datastore#3
https://developer.android.com/topic/libraries/architecture/datastore

相关文章

网友评论

      本文标题:Android 架构组件 之DataStore(2) - 对比S

      本文链接:https://www.haomeiwen.com/subject/jctetdtx.html