Android:DataStore 相对于 SharedPreferences 的优势

问题描述 投票:0回答:2

android Jetpack 团队最近发布了 DataStore 库(仍处于 alpha 版本),作为使用两种实现保存简单数据的方法:

  1. Preference DataStore 与 SharedPreferences 功能类似,用于存储简单的键值对..
  2. Proto DataStore 用于存储自定义数据类型,需要创建架构。

我们为什么不使用 sharedPreferences 来存储简单的数据类型,使用 Room 来存储更复杂的存储,而不是使用 DataStore

在 ANDROID 中使用 DATASTORE 相对于使用 SHAREDPREFERNCES(对于简单数据)+ ROOM(对于复杂数据)有什么好处。

android android-jetpack
2个回答
26
投票

引用Florina Mutanescu

SharedPreferences 有几个缺点:在 UI 线程上调用看似安全的同步 API、没有发出错误信号的机制、缺乏事务性 API 等等。 DataStore 是 SharedPreferences 的替代品,可以解决大部分这些缺点。 DataStore 包含使用 Kotlin 协程和 Flow 的完全异步 API,处理数据迁移、保证数据一致性并处理数据损坏。


0
投票

DataStore 和 SharedPreferences 都是 Android 中存储键值对的机制,但它们在功能、用例和底层实现方面存在一些关键差异。 共享首选项

1.SharedPreferences 将键值对存储在设备上的 XML 文件中。 2.对复杂数据类型的支持有限,主要用于原始类型和字符串。 3.对异步操作的支持有限。读取和写入操作通常是同步的。

数据存储

1.DataStore可以以两种格式存储键值对:Preferences DataStore(在XML文件中异步存储数据)和Proto DataStore(使用Protocol Buffers存储数据)。 2.通过Protocol Buffers支持复杂数据类型和结构化数据。 3.支持开箱即用的异步操作,使其适合在依赖协程的现代 Android 应用架构中使用。

© www.soinside.com 2019 - 2024. All rights reserved.