Ich frage mich, wie überprüft werden kann, ob meine Anwendung geöffnet und derzeit für den Benutzer sichtbar ist, wenn Sie eine onMessage()
von GCM erhalten. Zuerst benutzte ich nur meine eigene boolean isVisible
, aber dann erkannte ich, dass dies nicht zuverlässig ist, denn wenn die App nicht geöffnet ist, ist das Objekt, das ich verwende, um auf dieses Flag zuzugreifen, null
. Während dies an sich verwendet werden könnte, um zu sehen, ob die App geöffnet ist, scheint es ein bisschen chaotisch. Gibt es eine Möglichkeit in Android von einer Systemebene, irgendwie zu prüfen, ob die Anwendung gerade geöffnet ist und ob der Benutzer die App sieht? Denken Sie daran, dass eine App technisch ausgeführt werden kann, aber nicht sichtbar ist, weil ein Benutzer kürzlich die "Home" -Schaltfläche gedrückt hat, um sie in den Hintergrund zu stellen.Überprüfen Sie, ob die App während eines GCM onMessage-Ereignisses geöffnet ist.
@Override
protected void onMessage(Context arg0, Intent arg1) {
String turn = intent.getExtras().getString("turn");
if (turn.equals("yours"){
if (/*app is open*/){ <------------------ what can go here?
// dont generate a notification
// display something in the game instead
}
else{
// generate notification telling player its their turn
}
}
}
Vorsicht bei Speicherlecks! – rciovati
@rciovati wo ist das Leck? – Klaasvaak
Leider habe ich nicht gesehen, dass Sie den Verweis auf 'currentActivity' auf 'null' gesetzt haben, wenn die Aktivität in onPause geht. – rciovati