Jetpack的DataStore数据存储组件的使用简介

本文介绍了Android Jetpack的DataStore组件,作为SharedPreferences的替代方案。DataStore基于Kotlin协程和流程,提供了Preferences DataStore和Proto DataStore两种实现。DataStore支持异步、一致的事务操作,克服了SharedPreferences的不足。文章详细讲解了DataStore的使用,包括数据插入、读取,以及从SharedPreferences迁移数据的步骤。
摘要由CSDN通过智能技术生成

Jetpack的DataStore数据存储组件的使用简介

介绍

Jetpack DataStore是一种数据存储解决方案,可让您使用Protocol Buffer(协议缓冲区)存储键值对或类型化对象。DataStore使用Kotlin协程Flow异步,一致的事务方式来存储数据。

注意: 如果需要支持大型或复杂的数据集,部分更新或参考完整性,请考虑使用 Room 而不是DataStore。DataStore非常适合小型,简单的数据集,并且不支持部分更新或参照完整性。

目的

Jetpack DataStore 是经过改进的新版数据存储解决方案,旨在取代 SharedPreferences。以异步、一致的事务方式存储数据,克服了 SharedPreferences 的大部分缺点。

DataStore实现方式

DataStore 基于 Kotlin 协程和流程构建而成,提供两种不同的实现,分别如下:

  • Preferences DataStore方式

使用键存储和访问数据。此实现不需要预定义的架构,并且不提供类型安全性。

  • Proto DataStore方式

将数据存储为自定义数据类型的实例。此实现要求您使用协议缓冲区定义架构,但它提供类型安全性。

SharedPreferences 与 DataStore 支持功能的对比

特征 SharedPreferences PreferencesDataStore ProtoDataStore
是否支持异步
是否支持同步
是否支持在UI线程调用
可以发出错误信号
避免运行时异常
类型安全
一致的事务方式存储数据

.

.

DataStore 的简单使用

DataStore的使用就是: Preferences DataStore 的使用 和 Proto DataStore 的使用

PreferencesDataStore 的使用

build.gradle 文件添加 DataStore 的依赖

dependencies {
   
  // Preferences DataStore
  implementation "androidx.datastore:datastore-preferences:1.0.0-alpha04"
}

.

PreferencesDataStore 的使用步骤如下:

1. 创建Preferences DataStore

//定义 DataStore 的名字
private val MY_DATA_STORE_NAME = "DataStorePreference"

//创建DataStore对象
val dataStore: DataStore<Preferences> = context.createDataStore(
  name = DATASTORE_PREFERENCE_NAME
)

注:
name属性必须要设置,不然无法使用 DataStore

2. 插入数据

private suspend fun saveData(value: String) {
   
		//创建key
        var preKey = preferencesKey<String>(PREFERENCE_KEY_NAME)
		//插入数据
        dataStore.edit {
    mutablePreferences ->
            mutablePreferences[preKey] = value
        }
    }

PreferencesDataStore 中是通过 DataStore.edit() 写入数据,edit 方法是个 suspend 函数,必须在协程中进行调用;

3. 根据key来读取数据

private suspend fun readDara(): String {
   
		//创建key
        var preKey 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值