Kotlin наблюдать за каждый раз равен нулю - PullRequest
0 голосов
/ 21 февраля 2020

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

object appCommon {
    @Volatile
    lateinit var config: Config

    suspend fun initAppCommon() {
        GlobalScope.launch(Dispatchers.Main) {
            Database_mW.getDBInstance(AppController.appInstance).ConfigDAO().getLive()
                .observeForever(Observer {
                    config = it
                })
        }

        initConfig()
    }

    private suspend fun initConfig() {
        withContext(Dispatchers.IO) {
            if (Database_mW.getDBInstance(AppController.appInstance).ConfigDAO().get() == null) {
                Database_mW.getDBInstance(AppController.appInstance).ConfigDAO().insert(Config(getDeviceSerialNumber(), "", "", ""))
            }
        }
    }
}

Вот DAO:

@Dao
interface Config_dao {

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    fun insert(config: Config)

    @Update
    fun update(config: Config)

    @Query("DELETE FROM Config")
    fun clear()

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

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

    @Query("update Config set device_secret = :secret")
    fun updateSecret(secret: String)
}

Поэтому, когда я вызываю ConfigDAO (). Insert, вызывается наблюдатель, но он = null. Может кто-нибудь объяснить, как получить последний вставленный объект внутри обозревателя для обновления моего глобального var?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...