gpt4 book ai didi

Android:如何只创建一个 DatabaseRepository.kt 实例并在不同的 Activity 中使用它?

转载 作者:行者123 更新时间:2023-12-04 16:38:16 26 4
gpt4 key购买 nike

EDIT: I NEED TO PASS A CONTEXT AS A PARAMETER TO THE CLASS(DataStorerepository 是同一类,不要混淆)
我有两个 Activity ,AB和一个 repository . Activity A打开 Activity B和 Activity B将数据保存在 repository (DataStore android jetpack 的一部分)。
我正在使用 LiveData在这两个 Activity 中观察 DataStore 中的数据变化.
更新 DataStore 中的新值后来自 Activity B , LiveData在 Activity 中B按预期获取新的更新值。但是当我回到 Activity A LiveData获取旧数据(期待新的更新数据)。
我意识到它正在发生,因为我正在创建 repository 的两个实例在这两项 Activity 中。
我怎样才能只创建 repository 的一个实例?上课并在两个 Activity 中使用它?如果有更好的方法来做到这一点,那么该解决方案也受到欢迎。

最佳答案

基于静态引用和传递的单实例Context as 类参数会导致内存泄漏。另一方面,您可以使用 Application类来创建所需类的一个实例

class YourApp : Application(){
val repository by lazy { YourRepository(this) }
}
并使用 (context.applicationContext as YourApp).repository 在其他地方访问它.别忘了声明 android:name=...在 list 上申请

关于Android:如何只创建一个 DatabaseRepository.kt 实例并在不同的 Activity 中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66151654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com