2016-10-19 2 views
3

Я хочу, чтобы иметь возможность восстановления после сбоя/закрытия приложения или просто отсоединения устройства.Сохранение/Сериализация запросов OkHttp/Retrofit

В настоящее время, когда я обнаруживаю, что сеть отключена для моего устройства Android, я сохраняю вызов, созданный с помощью RetroFit2 в стеке (для обработки позже). Если пользователь должен закрыть приложение или перезапустить устройство, я теряю возможность сохранять эти звонки в любом месте ...

Мой вопрос в том, как я могу сохранить вызов RetroFit или запрос OkHttp3? Ни один из них не является сериализуемым, или я не могу преобразовать их в строки из того, что я мог видеть, глядя на код.

ответ

4

Используйте android priority jobqueue от Yigit Boyar (один из парней Android android). Он будет автоматизировать ваши задания, обнаруживать сетевые изменения (и реагировать соответственно) и сохраняться даже при перезагрузке устройства (не говоря уже о сбоях приложений). Плюс тонна других функций. Просто взгляните. Это не совсем то, что вы просили, но это лучшее решение. Это магия.

Начиная с версии 2, очередь заданий может быть интегрирована с JobScheduler или GCMNetworkManager. Эта интеграция позволяет Job Queue пробуждать аппликацию, основанную на критериях заданий, которые она имеет. Вы можете увидеть данные на соответствующей вики-странице. API-интерфейс Scheduler является гибким, так что вы можете реализовать свою собственную версию, если на вашем целевом рынке нет сервисов Google Play.

Попробуйте, и вы будете рады, что сделали, как и я. Он заполнил огромный пробел в моем коде, который я потратил несколько недель, взламывая вместе с косой, утки и верой.

+0

Спасибо, Элвис, я не видел, как он восстановится после сбоя приложения, но есть ли у вас какие-либо указания относительно того, будет ли это работать или нет? – Victor

+0

Я оправляюсь от сбоев приложений и даже перезагрузки телефона из моего использования. Что он делает, так это то, что он подключается к GCMNetworkManager (Google Play Services) или JobScheduler для платформы (https://d.android.com/reference/android/app/job/JobScheduler.html), которые пробуждают приложение и, следовательно, менеджер заданий , выполняя любой код, который вы запланировали для выполнения. –

+0

Если службы Google play и/или сбой JobScheduler не будут перезагружены (никогда не произойдет, если ваш телефон не взрывается - глядя на вас, примечание 7), запланированное задание произойдет. –

Смежные вопросы