Kotlin中带有匕首或物体的单子

问题描述 投票:0回答:1

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(...)
}
android kotlin singleton dagger-2
1个回答
0
投票

与Oject Kotlin合作将简化您的生活。它更容易调用。无需创建依赖关系并编写其他代码。

如果使用Dagger,您将获得更大的灵活性。因为您可以替换代码进行测试。而且,当您需要将一个实现替换为另一个实现时,只需在一个位置更改代码即可。

© www.soinside.com 2019 - 2024. All rights reserved.