私は、IntentService
、 とこれらのサービスではなくから別々のプロセスで実行される2つの派生を含む古いAndroid/javaコードを持っています。LiveDataとHandlerとLocalBroadcast
質問は、これらの結果を返す方法についてです。IntentService
メインループ内のコードを実行するために、Handler
+ Runnable
を用いて
つのサービスリターン結果:、
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
MyApplication.get().setFoo(someThing);
}
});
他方であるがActivity
にメッセージを送信するLocalBroadcastManager.getInstance(this).sendBroadcast(in);
を使用し、Activity
はonResume
にメッセージにBroadcastReceiver
介して購読しますに退会してください。
私は正しいでしょうか、どちらの場合でも簡略化するためにLiveData
を使用することは可能ですか?
IntentService
はLiveData
、誰結果は新しいデータが到着したときobserve
それ、 とIntentService
はpostValue
、 を呼び出す必要があります必要がありますかここLiveData
の使用を防ぐために、いくつかのサンゴ礁があるかもしれ?したいを作成する必要がありますか
これを確認しましたか: https://stackoverflow.com/questions/44204978/how-to-update-livedata-of-a-viewmodel-from-background-service-and-update-ui –
はいこれを行うことができます –
アクティビティとIntentServiceの通信にResultReceiverを使用すると、これらのコンポーネント間でデータを交換できます。これは別の解決策として有用です。 –