2016-10-19 14 views
3

アプリケーションのクラッシュ/クローズを解除したり、デバイスの接続を解除したりすることができます。OkHttp/Retrofitリクエストの保存/シリアライズ

現在のところ、ネットワークがAndroidデバイス用であることが検出されると、RetroFit2で作成されたコールをスタックに保存します(後で処理するため)。ユーザーがアプリを終了したり、デバイスを再起動したりした場合、どこでもこれらのコールを保存する可能性は失われます...

私の質問は以下のとおりです。どのようにしてRetroFitコールまたはOkHttp3リクエストを保存できますか? いずれもシリアライズ可能ではありませんし、コードを見てわかるものから文字列に変換することもできません。

答えて

4

android priority jobqueueをYigit Boyar(google android guysの1人)が使用します。あなたの仕事をセーラライズし、ネットワークの変化を検知し(それに応じて対応する)、デバイスの再起動(アプリケーションのクラッシュはもちろん)を続けます。他にもたくさんの機能をプラスしています。見てみましょう。それはあなたが要求したものではありませんが、より良い解決策です。魔法です。

ジョブキューをJobSchedulerまたはGCMNetworkManagerと統合することができます。この統合により、ジョブ・キューはジョブの基準に基づいてアプリケーションを起動させることができます。あなたは、関連するwikiページ上のdeatailsを見ることができます。スケジューラAPIは、ターゲット市場にGoogle Playサービスがない場合でもカスタムバージョンを実装できるよう柔軟性があります。

試してみると、私が行ったようにうれしく思います。それは私のコードの巨大な隙間を埋めるため、私は数週間かけて唾を吐くこと、鴨の巣や信仰と一緒にハッキングしました。

+0

ありがとうございましたエルヴィス、アプリのクラッシュからどのように復旧するのか分かりませんでしたが、うまくいくかどうかの指針はありますか? – Victor

+0

アプリのクラッシュから復旧し、私の使用状況から電話機を再起動します。それはGCMNetworkManager(Google Play Services)またはフレームワークのJobScheduler(https://d.android.com/reference/android/app/job/JobScheduler.html)にフックしてアプリケーションを起動させ、ジョブマネージャー実行のためにスケジュールしたコードを実行します。 –

+0

GoogleのサービスやJobSchedulerがクラッシュせず、再起動に失敗しない限り、携帯電話が爆発しない限り(ノート7を見てください)、スケジュールされたタスクが実行されます。 –

関連する問題