私は、Webサービスに呼び出しを転送するサービスと、それらの呼び出しを行ういくつかのアクティビティでアプリケーションを開発しています。アクティビティは、これらの呼び出しの結果を処理する必要があります。たとえば、サービスにwriteCommentメソッドがあり、Webサービスにアクセスして新しく書き込まれたコメントに関する情報を返します。アクティビティから長いサービスメソッドを呼び出す - ベストプラクティス
今、私はアクティビティにすべてのスレッドを処理させます。アクティビティはサービスをバインドし、バインドされたサービスのwriteCommentメソッドを呼び出すAsyncTaskを使用します。
AsyncTaskの実行中にアクティビティが停止しない限り、すべて正常に動作します。それが起こると(携帯電話をひっくり返すと簡単に起こる)、onPostExecuteでUIを更新しようとするとAsyncTaskが致命的に死にます。私はこれを修正する方法が完全にはわかりません - 私はを実行するは、サーバーが更新されたことをユーザーに知らせる必要があります。
サービスにコールバックを登録しても、サービスに通知する必要があるため、まだちょっと切れています。アクティビティが変更されたため通知する必要はありません最初のアクティビティのonDestoryを作成し、2番目のアクティビティのonCreateに再登録します。また、onDestroyの後でonCreateの前に非同期タスクが完了するケースを処理する必要があります。
この場合のベストプラクティスとは何でしょうか?
ありがとう、 Itay。
IntentServiceは実際にスレッドを処理しますが、コールバックは処理しません。 – zmbq