问题标签 [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 回答
205 浏览

android - 在另一个模块的刀柄中创建一个类的实例

我有 5 个模块(主要、启动、选择位置、权限、首选项)。

我想在 Splash 和 PickLocation 中使用 Preferences 模块。

这是我的模块的流程:Splash -> PickLocation

当我想使用 PickLocation 模块中的 DataStore 类来保存新位置时,我遇到了一个问题:

如果我在 Splash 模块中创建 DataStore 类的新实例并在 PickLocation 模块中创建同一类的另一个实例,则 DataStore 不起作用,但如果我只是在 PickLocation 中创建一个实例,则一切正常。如何使用 dagger hilt 创建一个实例并从所有模块访问?

偏好模块 DI:

PickLocation屏幕代码:

闪屏代码:

DataStore 类代码:(我如何在所有模块中使用此类的实例)

0 投票
1 回答
130 浏览

android - Jetpack 数据存储实现

您好,我正在尝试通过观看一些教程将 JetPack 数据存储实现到我的应用程序中,我是 koltin 的新手。我关注了这段视频中的所有内容:https ://www.youtube.com/watch?v=0J5GXuGD61E&t=366s

用户管理器.kt

类 MainActivity.kt

当我尝试访问任何这些方法时,我得到:

0 投票
1 回答
218 浏览

android - 即使没有变化也能发出流量

我的 android 应用程序中有一个数据存储区,用于存储我的个人资料详细信息。并检索如下

连同它,我正在保存用户的可用性状态

我正在我的视图模型中收集这样的用户个人资料详细信息

每当我更改用户可用性时,我的用户详细信息流也会被触发,这是不必要的并导致 ui 抖动(图像重新加载)。为什么会发生这种情况以及如何使流程仅在数据特别更改用户详细信息时才触发。

0 投票
1 回答
341 浏览

kotlin - 为什么会创建多个 Datastore?

java.lang.IllegalStateException:同一文件有多个活动数据存储:/data/user/0/com.firstgoalkeeper.firstgoalkeeper/files/datastore/player_pref.preferences_pb。您应该将 DataStore 保持为单例,或者确认同一文件上没有两个 DataStore 处于活动状态(通过确认范围已取消)。

我做错了什么并建议最佳做法。

0 投票
1 回答
419 浏览

android - 使用 viewModel 作为 jetpack compose 中的单一事实来源

假设我们有一个 viewModel,里面有一个名为 apiKey 的值。此值的内容以 Flow 的形式从 DataStore 接收,然后作为 LiveData 公开。另一方面,我们有一个名为 SettingsFragment 的 Fragment,我们试图在 TextField 中显示该 apiKey,让用户对其进行修改并立即将其保存在 DataStore 中。我目前使用的解决方案在下面,但问题是当对文本进行更改时 UI 变得非常滞后和缓慢。我的问题是,实现这一点的最佳方法是什么,并且我们的 apiKey 仍然拥有单一的事实来源?

0 投票
0 回答
135 浏览

android - java.lang.IllegalStateException:在将 NavBackStackEntry 的 ViewModel 添加到 NavController 的后台堆栈之前,您无法访问它

我创建了一个composable名为 ResolveAuth。ResolveAuth 是用户在 Splash 之后打开应用程序时的第一个屏幕。它所做的只是检查数据存储区中是否存在电子邮件。如果是,则重定向到主屏幕,如果不是,则重定向到教程屏幕

这是我的composableviewmodel代码

但我一直有一个例外说

我正在使用下面的jetpack lib进行导航

我的主屏幕和教程屏幕没有问题,因为我尝试分别运行它们并且效果很好。

0 投票
1 回答
74 浏览

android - 等待首选项数据存储从 workmanager 中的首选项数据存储中检索数据

我的应用程序正在后台检查未读电子邮件,问题是我需要在上次检查电子邮件时保存和检索 lastCheckedDate,以便我只能显示新收到的电子邮件。

为了从数据存储中检索数据,我使用 observeLastCheckedDate() 并且我必须使用处理程序调用它,因为如果我没有得到:

java.lang.IllegalStateException:无法在后台线程上调用观察

函数 observeLastCheckedDate() 被调用,但是当它完成时(更新 lastCheckedDate),workManager 任务已经完成了未更新的 var lastchecked 日期。

在主类中,我通过创建和调用回调来避免这个问题,但在这里不起作用(它使整个应用程序冻结),所以我们需要等待该函数完成或获取一些从数据存储中检索数据的新方法。

数据存储类:

0 投票
1 回答
301 浏览

android - android datastore-preferences:属性委托必须有一个 'getValue(Context, KProperty<*>)' 方法

我正在编写一个jetpack compose android应用程序,我需要永久存储一些设置。

我决定使用androidx.datastore:datastore-preferences:1.0.0库,我已将其添加到我的类路径中。

根据https://developer.android.com/topic/libraries/architecture/datastore描述,我已将这行代码添加到顶层的 kotline 文件中:

val Context.prefsDataStore: 数据存储首选项DataStore(name = "settings")

但我得到一个编译错误:

如何使用数据存储首选项?

我的 build.gradle 文件:

0 投票
0 回答
28 浏览

android - Kotlin 中的 Jetpack 数据存储和扩展字段

我了解无法按照此处所述将支持字段“添加”为扩展名。现在我在 jetpack 数据存储的文档中找到了这段代码,并不太明白发生了什么。在我看来,settingsDataStore 是 Context 的扩展字段,但这不应该是可能的......:

稍后这个“settingsDataStore”可以这样访问:

有人可以向我解释这里发生了什么吗?这是如何运作的?“dataStore()”是否以某种方式隐含地提供了 getter 和 setter?但实际的“settingsDataStore”到底在哪里?它不能真正引用上下文中的字段......?

0 投票
0 回答
11 浏览

android - 当我更新用户名中的数据时,我的 proto buff 数据存储不起作用问题仅存在于一个片段中

当我更新数据时,我的 proto buff 数据存储不工作问题仅存在于一个片段中我必须更新数据存储中的用户名,并且我在 android jetpack 中使用 protobuff 数据存储,但它在其他片段中工作正常问题出在这个 Otp 片段

@AndroidEntryPoint 类 Otp :Fragment(){