RoboSwag/lifecycle
Sergey Vlasenko 7866be1637 Merge branch 'feature/gradle_8_support' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-10 12:20:20 +03:00
..
src/main Merge branch 'feature/lifecycle_update' of https://git.svc.touchin.ru/TouchInstinct/RoboSwag into MB-43443 2024-04-08 09:48:54 +03:00
.gitignore Lifecycle modules refactor 2018-10-16 16:50:44 +03:00
README.md Fix submodules' READMEs 2019-09-10 13:58:03 +03:00
build.gradle feature add java 17, gradle 8 support 2024-03-06 14:59:59 +03:00

README.md

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.

private val viewModel = LifecycleViewModelProviders.of(this).get(SomeViewModel::class.java)

Подписка на SingleLiveEvent.

// во 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
    }
})