Я пытаюсь применить шаблон 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.
Мои вопросы:
В некоторых примерах, которые я рассмотрел, отсутствует обработка Disposable.
Обновлять: Я видел использование композитный одноразовый в Android-архитектура-компоненты.
Спасибо.
Посмотри может поможет: medium.com/@saquib3705/…
Просто очистите одноразовый / композитный одноразовый предмет в onCleared, этого достаточно
protected override onCleared(){
if ( diposable != null )
disposable.dispose()
}
Я догадался об этом и увидел, как пользоваться одноразовым композитом. Но зачем мне делать это с Room? :-)
почему ты не должен? вы всегда должны избавляться от текущих действий, когда ваша модель просмотра уничтожена, с Single это действительно не так важно, чем Observable, поскольку он может в конечном итоге избавиться от себя, но может быть после onCleard, хотя
Может быть, было бы лучше использовать подписку с SingleObserver в случае, когда обрабатываете Single?
Используйте
onCleared... пример этого в github.com/joreilly/galway-bus-android/blob/master/base/src/…