1

後のAPIリクエストのコールバックリクエスト。これは、基本的にデータベース内の数値を更新して5秒後にJSON応答で送信するサービスへのHTTPリクエストをトリガーするボタンしかありません。アクティビティはレスポンスを取得し、レスポンスをTextViewに表示します。私は、設定 - 開発者オプションで "アクティビティを保存しない"オプションを有効にした実際のデバイスでテストしています。アンドロイド - 私はアンドロイドでHTTPコールバックを処理する方法をよりよく理解しようとしていますので、私はHTTPのためのボレーを使用していますシンプルなアプリを作成しました</p> <p>...私はよくこれを説明することを願ってonDestroy

  1. スタートのアプリを起動する:

    これは私がテストしていたシナリオです。

  2. HTTPリクエストをトリガーするボタンをタップします。
  3. ボタンをタップした直後に、デバイスのホームボタンをタップしてアプリをバックグラウンドに送信します。 "Do not keep activities"オプションのためにonDestroyメソッドが呼び出されます。
  4. HTTP応答に数秒お待ちください。私はそれがlogcatモニタに表示され、データベースが更新されているので、デバイスが取得するのがわかります。
  5. コールバックを実行する前に、アクティビティがまだ有効であることを確認します。アクティビティが破棄されたため、コールバックは無視されます。アプリがバックグラウンドから復元された場合、クラッシュは発生しませんが、Network Responseは見落とされます。また、私はもう一度ボタンをタップすると、それは新しいHTTPリクエストを送信し、再び数が増加し...だから

、質問は以下のとおりです。ネットワークを実現するためのベストプラクティスです

  1. UIへの応答?私は、簡単な操作の代わりに、それが登録フォームであったとしましょう、私はバックグラウンドにアプリを送信するために電話や何かを得る、何かが起こる可能性がある場合、どうすればネットワークコールバック?アプリが再びフォアグラウンドになるまで、コールバックの実行を遅らせるものがありますか?

  2. onDestroyが呼び出された後にonSaveInstanceStateのようなBundleを保存して、アプリが再びフォアグラウンドになったときに復元する方法はありますか?

  3. HTTP応答に含まれる情報が機密性が高いとします。このケースを処理するための推奨される方法はありますか?私は、内部ストレージに応答を保存し、アプリが再びフォアグラウンドになったときにそれをチェックすることを考えていましたが、onDestroyが呼び出された後でそれが可能かどうかわかりません。機密データ。

ありがとうございます!

答えて

0

1)ネットワークコールバックを見逃すことはありません。あなたのアプリ全体(活動だけでなく)が殺されていなければ、バックグラウンドにいても呼び出されます。バックグラウンドでコールバックを取得するだけです。

2)いいえ。次にアクティビティが始まるときにネットワークコールの結果が必要な場合は、ローダーを使用してデータをロードすることをお勧めします。そうすれば、次回にLoaderの結果を照会し、必要な場合にのみ要求を開始することができます。

3)私は2で示唆したことを実行し、この質問の必要はありません。そのすべてはアプリのメモリにあります。

+0

こんにちは@ガベ... 1。「コールバックを見逃してはいけない」とは、私はそのブロックの実行を見逃さないことを意味していました。私は実際にコールバックを取得していますが、UIが破損しているためUIを更新することができません。ありがとう、私はローダーで試してみます。万が一、事例がありますか? – allo86

+0

ローダーでもその問題が解決されます –

+0

ローダーとMVPを組み合わせようとしています。私は、プレゼンターを保持するためにLoaderを使用することを奨励するいくつかの記事を読んだが、プレゼンターからVolleyリクエストを送信する(例ではユーザーにログインする)、私は以前と同じ問題を抱えている。プレゼンターがビュー(アクティビティー、フラグメント)がフォアグラウンドにないとき。私はPresenterの中でローダーを使うことを考えましたが、Presenterがイントロダクションを避けなければならないので、それは良い考えではないようです。あなたはこの状況をどうやって管理するかを知っているか考えていますか? – allo86

関連する問題

 関連する問題