Наблюдайте за живыми данными внутри класса объекта - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу создать одноэлементный объект с некоторыми глобальными переменными для всего приложения, а также я хочу наблюдать в этом объекте некоторые глобальные объекты LiveData. В одном из моих DAO у меня есть запрос, который возвращает LiveData

@Query("SELECT * from Config LIMIT 1")
    fun get(): LiveData<Config>

А вот мой класс объекта appCommon

object appCommon {
  @Volatile
  var globalVar1: Int = 1;

  @Volatile
  var globalVar2: String = "Global value";
}

Так что мой вопрос заключается в том, как правильно объявить глобальную переменную в моем объекте класс, который будет наблюдать LiveData от моего DAO?

1 Ответ

0 голосов
/ 21 февраля 2020

вы можете начать наблюдать за вашим запросом в блоке init объекта

object appCommon {
    val dao: ConfigDao by inject // pseudo code here, I'd go with DI 
                                 // but it's up to you how you retreive your dao 
                                 // (a repo will do better in my opinion)

    @Volatile
    var globalVar1: Int = 1;

    @Volatile
    var globalVar2: String = "Global value";

    var config: Config? = null

    init {
        dao.get().observeForever{ 
          config = it
        }
    }
}
...