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(DataStoreAndroid jetpack 的一部分)中。
我LiveData在这两个活动中都使用来观察DataStore.
更新DataStorefrom 活动中的新值后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=...在舱单上声明申请