美文网首页
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