From e26fd89882bd25c47b8e35a7f7186a7b7bb5060b Mon Sep 17 00:00:00 2001 From: Malik Khiraev Date: Fri, 19 Jul 2019 12:39:44 +0300 Subject: [PATCH] Docs for lifecycle (#34) --- lifecycle/README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 lifecycle/README.md diff --git a/lifecycle/README.md b/lifecycle/README.md new file mode 100644 index 0000000..1c265cf --- /dev/null +++ b/lifecycle/README.md @@ -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() + +// во ViewController +event.observe(this, Observer { event -> + when (event) { + is Event.Loading -> ::onEventLoading + is Event.Complete -> ::onEventComplete + is Event.Error -> ::onEventError + } +}) +``` + +### Подключение + +```gradle +implementation project(':lifecycle') +```