Docs for lifecycle (#34)

This commit is contained in:
Malik Khiraev 2019-07-19 12:39:44 +03:00 committed by GitHub
parent 273781030d
commit e26fd89882
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 49 additions and 0 deletions

49
lifecycle/README.md Normal file
View File

@ -0,0 +1,49 @@
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
}
})
```
### Подключение
```gradle
implementation project(':lifecycle')
```