如何在特定条件下清除喷气背包数据存储数据

Posted

技术标签:

【中文标题】如何在特定条件下清除喷气背包数据存储数据【英文标题】:How to clear jetpack datastore data on specific condition 【发布时间】:2021-02-27 06:46:49 【问题描述】:

我使用 jetpack 数据存储已经有一段时间了,但后来我遇到了问题。 我想在应用程序被销毁时清除数据存储区中的数据。 我使用 jetpack 数据存储仅以表单形式保存数据

我搜索到 sharedPreferences 有一个 clear() 函数,Jetpack Datastore 有类似的函数吗?我该如何使用它?

我在 datastore documentation但是没有说明如何使用

【问题讨论】:

【参考方案1】:

如果有人想知道如何删除特定偏好

context.dataStore.edit 
    it.remove(key)

【讨论】:

【参考方案2】:

使用这个

dataStore.edit  
        it.clear()
    

方法描述状态

从此 MutablePreferences 中删除所有首选项。

【讨论】:

如何在 proto 数据存储上使用它? 用于原始数据存储 -> datastore.updateData it.toBuilder().clear().build() 如何删除特定首选项键? @A.Albrg 你可以设置为空 @AdeDyas 你能写一个示例代码吗,拜托:)【参考方案3】:

试试这个(对于 Proto DataStore):

 dataStore.updateData  obj ->
    obj.toBuilder()
        .clear()
        .build()
 

【讨论】:

【参考方案4】:

如果你想删除一个特定的键,那么试试这个

dataStore.edit 
        if (it.contains(key)) 
            it.remove(key)
        
     

【讨论】:

但是it 指的是MutablePreferences。所以it.clear() 将清除所有首选项而不是特定键。 应该是it.remove(key),我也发了一个answer。包含检查也不是必需的,因为不会抛出异常。【参考方案5】:

对于 Proto DataStore,您可以这样做:

dataStore.updateData it.getDefaultInstance()

它不会删除文件,但实际上是相同的。

【讨论】:

那么,这个方法意味着它将dataStore变成默认数据?

以上是关于如何在特定条件下清除喷气背包数据存储数据的主要内容,如果未能解决你的问题,请参考以下文章

使用带有喷气背包导航组件的导航抽屉时如何更改工具栏图标(汉堡图标)

使用喷气背包导航将自定义过渡动画添加到底部导航设置

如何在单击按钮时开始活动以生成喷气背包的结果

如何完成活动? (喷气背包导航)

如何防止喷气背包组合脚手架在对话框中显示时占据屏幕的整个高度

如何在特定条件下序列化表单