MVVM - обработка одноразовых ключей во ViewModel с помощью RxJava и Room - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь применить шаблон MVVM в своей активности Android (я нуб Android).

Я использую Room с RxJava 2, например это подпись метода в моем хранилище:

public Single<MissionTask> getMissionTaskByID(long id) {..}

В моем классе ViewModel у меня есть ссылка на хранилище и код, подобный этому:

private void doSomethingOnUserEvent() {
    ...
      missionTaskRepository.getMissionTaskByID(firstID).
          observeOn(AndroidSchedulers.mainThread()).
          subscribeOn(Schedulers.io()).
          subscribe(missionTask ->
              {
                // do some work and update live data
              },
              t -> {
                // handle error
              });
    ...
  }

Пока все хорошо, кажется, все работает на поверхности. Сейчас - subscribe возвращает Disposable.

Мои вопросы:

  1. Как мне обращаться с одноразовым (например, я могу положить его в одноразовый композитный материал и утилизировать его после очистки модели)?
  2. Что будет, если я не избавлюсь от этого? Течь? Зачем?

В некоторых примерах, которые я прошел, нет обработки Disposable.

Обновление: Я видел использование композитных одноразовых в android-архитектура-компоненты .

Спасибо.

1 Ответ

0 голосов
/ 04 мая 2018

Просто очистите одноразовые / композитные одноразовые в onCleared, этого достаточно

protected override onCleared(){
    if( diposable != null )
        disposable.dispose()
}
...