Zastanawiam się, jak sprawdzić, czy moja aplikacja jest otwarta i obecnie widoczna dla użytkownika po otrzymaniu od GCM wersji onMessage()
. Najpierw użyłem własnego boolean isVisible
, ale potem zdałem sobie sprawę, że nie jest to niezawodne, ponieważ jeśli aplikacja nie jest otwarta, obiekt, którego używam, aby uzyskać dostęp do tej flagi, to null
. Chociaż to samo w sobie może być wykorzystane do sprawdzenia, czy aplikacja jest otwarta, wydaje się nieco chaotyczna. Czy jest jakiś sposób na Androida z poziomu systemu, aby sprawdzić, czy aplikacja jest aktualnie otwarta, i czy użytkownik przegląda aplikację? Należy pamiętać, że aplikacja może być technicznie uruchomiona, ale nie jest widoczna, ponieważ użytkownik niedawno nacisnął przycisk "home", wysyłając go na drugi plan.Sprawdź, czy aplikacja jest otwarta podczas zdarzenia GMM onMessage?
@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
}
}
}
Uważaj na wycieki pamięci! – rciovati
@rciovati gdzie jest wyciek? – Klaasvaak
Niestety, nie widzę, aby ustawiono wartość "null" w odniesieniu do "currentActivity", gdy Activity wchodzi w tryb onPause. – rciovati