问题标签 [android-jetpack-datastore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8015 浏览

android - 如何以编程方式清除 Android 中的 DataStore Preference 和 Room 数据

我正在开发一个 Android 应用程序。当我按下按钮时,我需要以编程方式清除数据,包括数据存储首选项和房间数据。

0 投票
3 回答
937 浏览

android - 如何打开 jetpack DataStore 文件 (.preferences_pb)

我正在尝试新的 jetpack DataStore库。我使用库保存了数据。这settings.preferences_pb 在应用数据目录 (/data/data/my.package.name/files/datastore/settings.preferences_pb) 中创建了一个文件。setting是我给的文件名。使用文本查看器无法正确显示数据。我可以辨认出键名,但值是垃圾。如何打开此文件并查看它?

这是文件settings.preferences_pb的驱动器链接

0 投票
1 回答
315 浏览

android - 从 DataStore 读取一次值以更新片段中的选项菜单复选框状态

我在 Jetpack DataStore 中保存了选项菜单复选框项(选中/未选中)的状态:

调用此方法:

现在我想在我的片段出现在屏幕上时恢复此复选框状态。但是由于 Jetpack DataStore 以 a 的形式提供用户首选项Flow,这感觉有点 hacky。我从中收集FlowonPrepareOptionsMenu使用take(1)运算符只执行一次,因为之后我不再需要从首选项中更新复选框,当我单击选项菜单项时状态会自动更改:

这是正确的方法吗?感觉有点hacky。在某些情况下,异步性会导致问题吗?

0 投票
4 回答
3032 浏览

java - Is new Jetpack Datastore only for Kotlin?

I've read about new library from Jetpack (now in alpha) - Jetpack Datastore.

It's clear from documentation that it's a sort of Shared Preferences' killer

Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers

DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally

If you're currently using SharedPreferences to store data, consider migrating to DataStore instead

If I don't miss anything you couldn't use this library in Java. Am I right? Personally I use Kotlin, but as for me it's a peculiar precedent for AndroidX library.

0 投票
0 回答
988 浏览

android - DataStore 未收到来自 Flow 的事件

我正在使用 datastore-preferences:1.0.0-alpha01 并且在更新数据存储区值时似乎无法恢复事件。我一直试图在片段和父活动中以相同的结果观察它。当我创建 DataStore 的实例并观察值流时,我在声明观察者后立即收到一个事件(在注册观察者后似乎很常见)。这将表明流程正在运行,并且观察者正在按预期接收事件。然后,我在从不接收事件的同一观察者内部更新首选项的值。

我使用这篇文章作为参考https://medium.com/scalereal/hello-datastore-bye-sharedpreferences-android-f46c610b81d5与我用来比较我的实现的存储库一起使用。显然,这个有效。https://github.com/PatilShreyas/DataStoreExample

数据存储实用程序

更新连接对话框

当视图膨胀时,这就是我在日志中看到的

现在,通过其他示例,我们应该看到观察者触发了一个已更新的事件,但我没有。对于其他示例,添加相同的日志记录点,很明显观察者收到了更新事件。

0 投票
1 回答
2339 浏览

android - 观察 Android Jetpack DataStore 值变化

我是否遗漏了什么,或者无法将侦听器附加到新的 Android Jetpack Preference Datastore?我认为使用 Flow 的全部意义在于我们可以在 Preference Datastore 上调用 flow.toLiveData() 并观察值变化的变化。

这是我从数据存储区获取流的方式。

我希望在 ViewModel 中将 Flow 转换为 LiveData 并监听更改,直到删除观察者。

但是,此观察者仅发出保存的值,并且不会随着值的更新而更新。退出并重新进入屏幕会显示更新后的值。

这是我如何更新 DataStore 中的每个值

我错过了什么,我应该使用收集而不是地图吗?如果是,有人可以向我展示如何在这种情况下使用 Flow collect 的示例。

0 投票
0 回答
414 浏览

android - 使用 Jetpack DataStore,是否可以为名称打开已创建的数据存储?

我想知道是否可以打开一个数据存储来创建它。

阅读官方文档,提到了 Context 类的扩展函数,用于创建偏好数据存储。

但是,它创建了一个新的数据存储,是否可以获取以前创建的数据存储,例如以前的 SharedPreferences 实现?

任何帮助,将不胜感激。

这已提交给谷歌的问题跟踪器

(更新)

应用首选项数据存储后,我注意到以下内容:

使用首选项数据存储时,数据仅在应用程序打开并处于活动状态时才存在。

我记得使用共享首选项时必须做的一件事:

他们(偏好)被保存,直到我卸载应用程序......

使用首选项数据存储时不会发生这种情况。

我希望他们能解决这个问题,了解它处于 alpha 阶段。

0 投票
3 回答
984 浏览

android - Jetpack 原型数据存储 - 使用 Kotlin dsl 进行 gradle 配置

在 jetpack 数据存储中,您必须设置 gradle 插件任务以从文件中生成类.proto

在我的项目中,我将Kotlin dsl用于我的 gradle 项目。尝试将其转换为 kotlin dsl 后,option属性未知,我找不到它可以替代 kotlin kts

0 投票
1 回答
2203 浏览

android - 无法在 jetpack 数据存储类中写入首选项未找到异常

我正在使用 jetpack 数据存储来存储用户首选项。我要完美地检索数据,但是当我尝试在数据存储中写入数据时,它给了我一个错误。附加了错误,这是一个找不到类的异常,我不知道依赖项是否有问题,或者只是我。

这是我用来处理数据存储的类

这是我试图将数据存储到数据存储中的功能

这是我得到的错误

0 投票
5 回答
4685 浏览

android - How to clear jetpack datastore data on specific condition

i've been using jetpack datastore for a while, but then i got a problem. I want to clear data in datastore when the app is destroyed. Im using jetpack datastore to persist data only in form

i've searched that sharedPreferences has a clear() function, is there a similar function for Jetpack Datastore ? and how can i use it ?

i found clear function in datastore documentation but there is no explanation on how to use it