RoboSwag/lifecycle/README.md

1.9 KiB
Raw Permalink Blame History

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
    }
})