質問:長時間実行タスクからアクティビティへの進行状況/完了を報告するためのベストプラクティスは何ですか?アクティビティがバックグラウンド/オリエンテーションに変化している間に進行状況/完了レポートが発生した場合の対処方法は?アクティビティまたはフラグメントへのコールバックを伴う長時間実行タスク
実生活の例: アクティビティは、サーバーからデータを取得するネットワークコールを行います(これには10 +秒かかる場合があります)。 このネットワークコールが終了すると、アクティビティに通知し、アクティビティでネットワークコールが終了したことを示す必要があります。
これは、アプリが開いたままであれば実装が簡単です。私の問題は、アプリケーションがバックグラウンドにある間にネットワークコールが終了した場合(何らかのコールバックが欠落する)、どうすればよいかです。
私はこれを行うには、次の方法を見てきたが、私は何をすべきかを決定することはできません:ネットワーク呼び出しが実行されるスレッドを生成
- サービス。サービスはアクティビティにバインドされています。ネットワーク通話終了時に、アクティビティへのサービスコールバック。サービスがコールバックを作成したときにアクティビティがバックグラウンドになっている(アクティビティがコールバックを逃している)場合、アクティビティはサービスに保存されたデータをポーリングする必要がありますか?
- ネットワーク呼び出しが終了したときにデータをブロードキャストIntentService(それが背景にあるため、活動はこの放送を見逃した場合に何をすべきか?)
- AsyncTaskが、アクティビティなどを背景に
この問題にはどのようにアプローチすればよいですか?
ありがとうございました。私は2つの質問があります: アクティビティがバックグラウンドの間にタスクが完了するとどうなりますか?それから、すべてのコールバックが見逃されてしまうでしょう。アクティビティがバックグラウンドの間にサーバーから取得されたデータを取得するにはどうすればよいですか? タスクを実行するためにフラグメントを使用することは「ベストプラクティス」のようには思われません。 私は間違いなくこのアプローチの点を参照してください。 編集:データをHeadlessFragmentに保存し、 "TaskHasFinished"の場合はフラグメントからデータを要求する必要がありますか? –
@JonasJensenあなたの質問については、編集された答えをご覧ください。 – Nerd