相关疑难解决方法(0)

在Kotlin中带参数的单例

我正在尝试将Android应用程序从Java转换为Kotlin.应用程序中有一些单身人士.我在没有构造函数参数的情况下为单例使用了伴随对象.还有另一个单例采用构造函数参数.

Java代码:

public class TasksLocalDataSource implements TasksDataSource {

    private static TasksLocalDataSource INSTANCE;

    private TasksDbHelper mDbHelper;

    // Prevent direct instantiation.
    private TasksLocalDataSource(@NonNull Context context) {
        checkNotNull(context);
        mDbHelper = new TasksDbHelper(context);
    }

    public static TasksLocalDataSource getInstance(@NonNull Context context) {
        if (INSTANCE == null) {
            INSTANCE = new TasksLocalDataSource(context);
        }
        return INSTANCE;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在kotlin的解决方案:

class TasksLocalDataSource private constructor(context: Context) : TasksDataSource {

    private val mDbHelper: TasksDbHelper

    init {
        checkNotNull(context)
        mDbHelper = TasksDbHelper(context)
    }

    companion object {
        lateinit var INSTANCE: TasksLocalDataSource
        private val …
Run Code Online (Sandbox Code Playgroud)

android kotlin

43
推荐指数
6
解决办法
3万
查看次数

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

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并在这两个活动中使用它?如果有更好的方法来做到这一点,那么该解决方案也受到欢迎。

singleton android repository kotlin android-jetpack-datastore

5
推荐指数
1
解决办法
2855
查看次数