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

Jun*_*ior 5 singleton android repository kotlin android-jetpack-datastore

EDIT: I NEED TO PASS A CONTEXT AS A PARAMETER TO THE CLASS

DataStorerepository同一个班级,不要混淆)

我有两项活动,AB一项repository。ActivityA打开 Activity B,ActivityB将数据保存在repositoryDataStoreAndroid jetpack 的一部分)中。

LiveData在这两个活动中都使用来观察DataStore.

更新DataStorefrom 活动中的新值后BLiveData活动中的B会按预期获取新的更新值。但是,当我返回活动时,ALiveData获取旧数据(期望新的更新数据)。

我意识到这种情况正在发生,因为我repository在这两个活动中创建了两个实例。

我怎样才能只创建该类的一个实例repository并在这两个活动中使用它?如果有更好的方法来做到这一点,那么该解决方案也受到欢迎。

Sta*_*dar 4

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

class YourApp : Application(){
    val repository by lazy { YourRepository(this) }
}
Run Code Online (Sandbox Code Playgroud)

并在其他地方使用 访问它(context.applicationContext as YourApp).repository。并且不要忘记android:name=...在舱单上声明申请