Erkennen Sie "Home-Button gedrückt" -Ereignis im Android-Dienst und zeigen Sie eine Benutzeroberfläche an (ähnlich wie bei Facebook-Chatheads)

Bei Facebook-Chatheads, die Teil der Facebook Messenger-App sind, ist mir folgendes Verhalten aufgefallen: Soweit ich sehen kann, sind der Chat-Kopf selbst und der geöffnete Chat-Bildschirm Teil eines Dienstes. Es ist keine Aktivität beteiligt.

Wie kann ich sicher sein? Nachdem ich auf dem geöffneten Chat-Bildschirm die Home-Taste gedrückt habe, wird der Chat-Kopf minimiert und ich kann den Chat-Bildschirm sofort wieder öffnen. Wenn der Chat-Bildschirm eine Aktivität war, öffnen Sie die Aktivität erneut überstartActivity(intent) Nach dem Drücken der Home-Taste wird der Start der Aktivität verzögert, wie hier angegeben:Starten einer Aktivität von einem Dienst, nachdem die HOME-Taste ohne die Verzögerung von 5 Sekunden gedrückt wurde

und hier:Grund für eine Verzögerung von 5 Sekunden, um beim Drücken der Home-Taste eine Aktivität anzuzeigen?

In meiner Dienst-onCreate-Methode verwende ich den folgenden Code, um eine Benutzeroberfläche vom Dienst anzuzeigen:

public class ServiceTest extends Service {
...
    @Override 
    public void onCreate() {
        super.onCreate();

        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);

        windowManager.addView(someView, params);
    }
....
}

Hat jemand eine Idee, wie ich das Ereignis "Home-Button gedrückt" direkt von einem Dienst erhalten kann, der eine Benutzeroberfläche anzeigt? Ich möchte meine Ansicht minimieren (ähnlich wie bei Facebook-Chat-Heads), wenn der Benutzer den Home-Button drückt.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage