Я пытаюсь реализовать какой-то глобальный объект для моего приложения и наблюдать внутри некоторые 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?