So stellen Sie fest, ob eine meiner Aktivitäten im Vordergrund steht [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Überprüfen, ob eine Android-Anwendung im Hintergrund ausgeführt wird 28 Antworten

Ich habe einen BroadcastReceiver implementiert, der vom AlarmManager ausgelöst wird. Der AlarmManager wird bei BOOT_COMPLETED initialisiert. Also muss ich den Empfänger im Manifest deklarieren.

Mein Problem ist, dass ich möchte, dass der BroadcastReceiver nur etwas tut, wenn keine meiner eigenen Aktivitäten im Vordergrund steht (auch bekannt als der Benutzer interagiert nicht mit meiner Anwendung). Ich rufe Informationen von einem Remote-Server ab und möchte den Benutzer nicht benachrichtigen, wenn er sich gerade in meiner Anwendung befindet.

Bisher konnte ich nicht feststellen, ob meine Anwendung im Vordergrund steht. Gibt es eine Möglichkeit, so etwas zu tun? Der ActivityManager teilt mir mit, ob meine Anwendung ausgeführt wird, nicht jedoch, ob sie sich im Vordergrund befindet.

Das Problem ist so ziemlich dasselbe wie hier beschrieben:Informieren Sie die Aktivität von einem BroadcastReceiver NUR, wenn sie im Vordergrund steht

LÖSUNG:

Nachdem ich mehrere Lösungen evaluiert habe, möchte ich kurz umreißen, was meiner Meinung nach die beste Methode ist, um mit Aktivitäten im Hintergrund / Vordergrund umzugehen.

Die bevorzugte Methode besteht darin, einen Rundfunkempfänger in der onResume-Methode Ihrer Aktivität zu registrieren und die Registrierung für die Aktivitäten in onPause aufzuheben. Jeder Dienst oder jedes andere Hintergrundelement muss dann eine Broadcast-Absicht mit einer bestimmten Aktion senden, die von Ihrer Aktivität abgefangen wird.

Wenn Ihre Aktivität im Vordergrund steht, wird der Absichtsempfänger registriert und kann die von Ihrem Dienst gesendete Absicht direkt verarbeiten. Wenn es nicht im Vordergrund ist, wird es nicht die Absicht empfangen, sondern der Dienst, der die Sendung aufgerufen hat, wird wissen, dass niemand seine Sendungsabsicht abgefangen hat und in der Lage sein wird, sich selbst darum zu kümmern. Es könnte zB die gewünschte Aktivität starten, eine Benachrichtigung anzeigen usw.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage