Я использую AndroidViewModel и возвращаю поток данных, будь то Observable или LiveData, пока все идет хорошо, я вижу, что в классе ViewModel есть метод, говорится в документе onCleared()
Этот метод будет вызываться, когда эта ViewModel больше не используется и будет уничтожен. Это полезно, когда ViewModel наблюдает за некоторыми данными, и вам необходимо очистить эту подписку, чтобы предотвратить утечку этой ViewModel.
У меня есть сценарий, в котором я возвращаю Single<ApiResponse>
из модернизации, делаю несколько .map()
в ViewModel
и возвращаю ответ как Single<ToBeShownOnUiResponse>
. Я подписываюсь на это в View, то есть фрагмент. Я добавляю подписчика в CompositeDisposable
и после этого очищаю onStop
фрагмент. Когда я перехожу от LoginActivity (удерживайте фрагмент signin / signup / passwordreset) к HomeActivity (удерживайте tablayout с другими фрагментами), я не вижу журналов, записанных в методе onCleared () класса ViewModel. Я делаю что-то не так, или я все испортил.
Я спрашиваю, каким образом onCleared()
мне полезен. Какой отдельный код или очистку я должен написать в нем?
Использование: когда мне нужен строковый ресурс, я использую AndroidViewModel
(форматирование некоторого ответа api в соответствии с строковым ресурсом, представленным в xml), и когда требуется только вызов api, я использую ViewModel
.