Синглтон в Kotlin с кинжалом (@Singleton) или объектом - PullRequest
0 голосов
/ 03 марта 2020

Как лучше всего использовать Singleton с несколькими LiveData для наблюдения и публикации?

Объект:

object EventsObj {

    private val _actionLiveData = MutableLiveData<...>()
    val actionLiveData: LiveData<...> = _actionLiveData

    fun postActionEvent(value: ...) {
        _actionLiveData.postValue(value)
    }
    ... //few more LiveDatas following the same logic
}

или кинжал:

@Singleton
class EventsClass
@Inject constructor() {

    private val _actionLiveData = MutableLiveData<...>()
    val actionLiveData: LiveData<...> = _actionLiveData

    fun postActionEvent(value: ...) {
        _actionLiveData.postValue(value)
    }

    ... //few more LiveDatas following the same logic
}

Использование:

@Inject
lateinit var eventsClass: EventsClass

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    eventsClass.actionLiveData.observe(this, ...)
    eventsClass.postActionEvent(...)

    EventsObj.actionLiveData.observe(this, ...)
    EventsObj.postActionEvent(...)
}

1 Ответ

0 голосов
/ 03 марта 2020

Работа с Oject Kotlin упростит вашу жизнь. Проще позвонить. Нет необходимости создавать зависимости и писать дополнительный код.

Если вы используете Dagger, вы получите больше гибкости. Вы можете заменить код для тестирования. А в случае, когда вам нужно будет заменить одну реализацию другой, вам придется менять код только в одном месте.

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