私のプロジェクトではBroadcastReceiver
、長時間実行されているスレッドからのコールバックとしてsを使用しています(たとえば、ダウンロードが終了したことをアクティビティに通知し、アクティビティThread
がユーザーに適切なメッセージを表示できるように、ワーカーから応答データを送信します)。を使用するBroadcastReceiver
には、ブロードキャストレシーバーを使用するたびに登録と登録解除を慎重に行う必要があります。また、特にこのメソッドをさまざまなアクション(ダウンロード、Webサービス呼び出しの作成など)に使用する場合は、送信するメッセージにも注意する必要があります。 ..)。また、Broadcastのインテントを介してカスタムオブジェクトを送信するには、オブジェクトを作成する必要もありますParcelable
。
このアプローチとは異なり、私が使用するメソッドよりも単純に見えるコールバックメソッドアプローチも見ました。コールバックメソッドは、アプリメッセージングのBroadcastRecaiverと同じ効果を達成するために使用できる単純なインターフェイスメソッドの実装です。このアプローチでは、複雑なオブジェクトを返すためにParcelableの実装は必要なく、..のようなキーも使用しませんBroadcastReceiver
。悪い部分は、コールバックメソッドを呼び出す前にコールバックオブジェクトのnull値を確認する必要があることです。また、UIスレッドの実装からコードを実行していることを確認して、エラーなしでUIを更新できるようにします。
わかりました、私が言うことをあなたが理解したことを願っています:)。
BroadcastReceiver
ここで問題となるのは、単一のアプリケーション内で使用する場合のアプローチよりも、コールバックメソッドの方が優れている(より軽く、よりクリーンで、より高速である)と思いますか?Service
(私はバックグラウンド作業にAndroidを使用していないことに注意してAsyncTask
くださいThread
。
ありがとうございました!