将Singleton
与全局LiveData
进行观察和发布的最佳方法是什么?
Object:
object GlobalEventsObj {
private val _globalLiveData = MutableLiveData<...>()
val globalLiveData: LiveData<...> = _globalLiveData
fun postGlobalEvent(value: ...) {
_globalLiveData.postValue(value)
}
}
或Dagger:
@Singleton
class GlobalEvents
@Inject constructor() {
private val _globalLiveData = MutableLiveData<...>()
val globalLiveData: LiveData<...> = _globalLiveData
fun postGlobalEvent(value: ...) {
_globalLiveData.postValue(value)
}
}
用途:
@Inject
lateinit var globalEvents: GlobalEvents
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
globalEvents.globalLiveData.observe(this, ...)
globalEvents.postGlobalEvent(...)
GlobalEventsObj.globalLiveData.observe(this, ...)
GlobalEventsObj.postGlobalEvent(...)
}
与Oject Kotlin合作将简化您的生活。它更容易调用。无需创建依赖关系并编写其他代码。
如果使用Dagger,您将获得更大的灵活性。因为您可以替换代码进行测试。而且,当您需要将一个实现替换为另一个实现时,只需在一个位置更改代码即可。