私は主な活動と縛られたサービスを持っています。バインドされたサービスは、メインアクティビティのハンドラに送信されるメッセージをトリガするコマンドをネットワークから受信します。 Handlerのリファレンスをサービスに渡すことで、作業するためのすべてが得られました。そして、...私はMessengerと呼ばれるこの事を見つけた。ハンドラへの参照を渡すのではなく、なぜMessengerを使用するのですか?
メッセンジャー:他の人がそれにメッセージを送信するために使用できるハンドラに参照。これにより、あるプロセスでハンドラを指し示すMessengerを作成し、そのMessengerを別のプロセスに渡すことで、プロセス間でメッセージベースの通信を実装できます。
これは、いくつかの質問に触発:
- は、長期的プロセスは、私がProcess and Thread ガイドラインの下で独立したプロセスを生成 ない限り、Messengerを使用する必要はありませんということですか?
- メッセンジャーを使用するのは常に良い方法ですか?
- 一般的に悪い考えをハンドラへの参照を渡していますか?
これはあなたの質問に対する答えではありませんが、私はバックグラウンドスレッドにAsyncTaskを使うべきです。 (http://developer.android.com/reference/android/os/AsyncTask.htmlを参照してください) –
私はバインドされたIntentServiceを使用しています。これは非同期要求を処理する必要があります。 AsyncTaskは適切ではないと私は考えています。なぜなら、私のサービスがインターネットからのコマンドをリッスンしている間に、AsyncTasksは短時間の操作(理想的には数秒)アクティビティの全ライフタイム。 – Rich
また、サイド・コメントとして、AsyncTasksをUIスレッドから呼び出す必要があります – Selecsosi