RoboSwag/lifecycle/README.md

44 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

lifecycle
=====
Модуль содержит обертку над `ViewModelProviders` для работы с `ViewController` и обертки для передачи событий из `ViewModel` во `ViewController`.
### Основные интерфейсы и классы
`LifecycleViewModelProviders` - объект для получения `ViewModelProvider`. Содержит функцию *of*, которая принимает `LifecycleOwner` и возвращает специфичный для него `ViewModelProvider`.
`SingleLiveEvent` - событие - одиночка. Посылает события только один раз. Наследуется от `MutableLiveData` и переопределяет методы `observe` и `setValue`.
`ContentEvent` - событие, обертка над данными.
Дочерние классы:
* `Loading` - символизирует состояние загрузки,
* `Success` - символизирует успешное событие,
* `Error` - символизирует ошибку,
* `Complete` - символизирует завершение события.
`Event` - аналогичен `ContentEvent`, только не содержит никакой информации о данных. Нужен для оповещения о наступлении одного из следующих событий: `Loading`, `Complete` или `Error`.
### Примеры
Получение `ViewModel` во `ViewController`.
```kotlin
private val viewModel = LifecycleViewModelProviders.of(this).get(SomeViewModel::class.java)
```
Подписка на `SingleLiveEvent`.
```kotlin
// во ViewModel
val event = SingleLiveEvent<Event>()
// во ViewController
event.observe(this, Observer { event ->
when (event) {
is Event.Loading -> ::onEventLoading
is Event.Complete -> ::onEventComplete
is Event.Error -> ::onEventError
}
})
```