我想为整个应用程序创建一个带有一些全局变量的单例对象,并且我还想在该对象中观察一些全局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";
}
所以我的问题是如何在将从DAO观察LiveData的对象类中正确声明全局变量?
您可以在对象的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
}
}
}