Jun*_*ior 5 singleton android repository kotlin android-jetpack-datastore
EDIT: I NEED TO PASS A CONTEXT AS A PARAMETER TO THE CLASS
(DataStore
是repository
同一个班级,不要混淆)
我有两项活动,A
和B
一项repository
。ActivityA
打开 Activity B
,ActivityB
将数据保存在repository
(DataStore
Android jetpack 的一部分)中。
我LiveData
在这两个活动中都使用来观察DataStore
.
更新DataStore
from 活动中的新值后B
,LiveData
活动中的B
会按预期获取新的更新值。但是,当我返回活动时,A
会LiveData
获取旧数据(期望新的更新数据)。
我意识到这种情况正在发生,因为我repository
在这两个活动中创建了两个实例。
我怎样才能只创建该类的一个实例repository
并在这两个活动中使用它?如果有更好的方法来做到这一点,那么该解决方案也受到欢迎。
基于静态引用并Context
作为类参数传递的单个实例会导致内存泄漏。另一方面,您可以使用Application
类来创建所需类的一个实例
class YourApp : Application(){
val repository by lazy { YourRepository(this) }
}
Run Code Online (Sandbox Code Playgroud)
并在其他地方使用 访问它(context.applicationContext as YourApp).repository
。并且不要忘记android:name=...
在舱单上声明申请
归档时间: |
|
查看次数: |
2855 次 |
最近记录: |