Android: лучший способ обработать результат обратного вызова, чтобы избежать сбоев?

Я работаю с приложением, которому нужно вызвать веб-сервис для получения данных. Я использую Retrofit с обратным вызовом для обработки данных результатов. Это означает, что я вызываю веб-сервис асинхронно.

И есть проблема, что, со временем, пользователь переходит к другой деятельности, пока запрос не завершен. Таким образом, когда он завершается, он вызывает некоторый ресурс, который больше не существует -> приводит к падению.

Кроме ловли NPE здесь, не могли бы вы дать какую-то другую идею для этого?

1 ответ

Решение

Я нашел эту статью, которая объясняет отличную структуру приложения для Android на основе событий шины.

В onResume / onPause вы присоединяете текущий фрагмент / активность к событиям и подписываетесь на событие во фрагменте.

В приложении вы можете зарегистрировать, например, UserService, который будет обрабатывать событие шины, например postLogin и после этого создайте и отправьте новый вызов события onLogged (например).

Я использую его в новом приложении, и это очень удобно и чисто. Вы можете избежать неприятных вещей и иметь такой же результат сетевого запроса во многих местах, например, чтобы обновить NavigationView одновременно с текущим фрагментом Login.

Другие вопросы по тегам