3 Stimmen

Wie kann ich einen Android-Dienst NUR dann anhalten, wenn keine anderen Aktivitäten in meiner Anwendung laufen?

Gibt es eine Möglichkeit, wie ich testen kann, ob andere Aktivitäten in meiner App noch aktiv sind? Ich bin auf der Suche nach einem Dienst in einer onDestroy-Methode zu stoppen, aber nur wollen, dies zu tun, wenn es keine anderen Aktivitäten aus meiner app noch lebendig auf dem Stapel sind.

Ich habe den Aufruf den Dienst in der onDestroy()-Methode der Hauptaktivität zu stoppen. Das funktioniert perfekt, AUSSER wenn ein Benutzer meine App startet, dann ein paar Aktivitäten in meiner App startet, dann den Startbildschirm aufruft und meine App erneut startet, wird er meine Reihenfolge umkehren und die Hauptaktivität wird nun über anderen Aktivitäten meiner App stehen. Wenn sie in diesem Zustand auf die Schaltfläche "Zurück" klicken und meinen Startbildschirm verlassen, wird die onDestroy()-Methode ausgelöst und der Dienst beendet, obwohl noch andere Aktivitäten auf dem Stapel geöffnet sind. Ich möchte dies vermeiden, indem ich den Dienst NUR dann stoppe, wenn ich sicher bin, dass keine anderen Aktivitäten von mir auf dem Stapel geöffnet sind. Ist das möglich?

0 Stimmen

Das ist schwieriger, als ich zunächst dachte. Mir ist klar, dass meine Idee, den Dienst in der onDestroy()-Methode bedingt anzuhalten, nicht gut ist, weil es dann nie einen Aufruf zum Anhalten des Dienstes geben wird. Es bleibt also eine grundlegende Frage: Wie kann ich einen Dienst starten, der weiterläuft, solange sich noch Aktivitäten meiner Anwendung auf dem Stapel befinden, und der gestoppt wird, wenn keine mehr vorhanden sind?

16voto

CommonsWare Punkte 950864

Wie kann ich einen Dienst einrichten, der so lange weiterläuft, wie eine meiner Aktivitäten meiner Anwendung noch auf der Stapel sind, aber angehalten wird, wenn keine bleiben?

Verwenden Sie nicht startService() y stopService() . Verwenden Sie stattdessen bindService() y unbindService() , auch wenn Sie die gebundene Verbindung nicht wirklich benötigen. Das Binden/Entbinden wird als Referenz gezählt. Wenn Sie bindService() mit dem BIND_AUTO_CREATE Flagge, die erste bindService() Anruf wird Ihr Dienst beginnen. Dann, wenn alle bindService() Anrufe haben übereinstimmende unbindService() anruft, wird Android Ihren Dienst automatisch abschalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X