In meiner Android-App verwende ich Firebase Cloud Messaging, um einige Daten an App zu senden.Firebase Cloud Messaging: Zugriff auf Benutzeroberflächenelemente in onMessageReceived()
Wenn die Anwendung eine Nachricht durch onMessageReceived()
empfängt, I zu überprüfen, ob ein derzeit MainActivity
sichtbar ist (MainActivity
die aktuell sichtbaren MainActivity
eine statische Referenz hat), und wenn die Aktivität sichtbar ist, mache ich einige Modifikationen auf die Aktivität.
Da onMessageReceived()
nicht im Haupt-Thread aufgerufen wird, verwende ich eine Handler
, um den Code im Haupt-Thread auszuführen.
@Override
public void onMessageReceived(final RemoteMessage remoteMessage) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
//Access UI
});
}
Ist etwas falsch mit diesem Ansatz? Falls nicht, gibt es andere Möglichkeiten, die aktuell sichtbare Benutzeroberfläche zu aktualisieren, wenn eine Cloud-Nachricht empfangen wird?
Sie können mit der empfangenen Nachricht eine lokale Übertragung an die Aktivität senden und dort einige Änderungen vornehmen. –