Ich habe alten Android/Java-Code, der zwei abgeleitet von IntentService
, und diese Dienste nicht in separaten Prozessen ausgeführt wird.LiveData vs Handler und LocalBroadcast
Die Frage ist über die Art und Weise, Ergebnis von diesen IntentService
zurückzugeben.
Ein Service Rückergebnis von Handler
+ Runnable
verwenden, Code in Hauptschleife ausgeführt wird:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
MyApplication.get().setFoo(someThing);
}
});
das andere ist verwendet LocalBroadcastManager.getInstance(this).sendBroadcast(in);
Nachricht an Activity
zu schicken, und Activity
abonnieren via BroadcastReceiver
auf Nachricht in onResume
, und abmelden in .
Bin ich richtig, und in beiden Fällen ist es möglich, LiveData
zu verwenden, um die Dinge zu vereinfachen?
IntentService
sollte LiveData
erstellen und wer will Ergebnis sollte es observe
, und wenn neue Daten IntentService
sollte postValue
ankommt nennen, oder kann es einige Riffe Nutzung von LiveData
hier zu verhindern?
haben Sie diese ausgecheckt: https://stackoverflow.com/questions/44204978/how-to-update-livedata-of-a-viewmodel-from-background-service-and-update-ui –
Sie ja kann dies tun –
Verwenden Sie ResultReceiver für Aktivität zu IntentService-Kommunikation, können Sie die Daten zwischen diesen Komponenten austauschen. Es ist nützlich für eine alternative Lösung. –