Android: Dienst beendet, wenn Activity geschlossen
Wenn ich es richtig verstehe,
bindService() mit BIND_AUTO_CREATE starten Sie einen Dienst und wird nicht sterben, bis alle Bindungen sind alle unbinded.
Aber wenn ich bindService(BIND_AUTO_CREATE) bei onCreate() und drücken Sie die zurück-Taste, um schließen Sie die
Tätigkeit, die service-Aufrufe onDestroy() und stirbt auch.
Ich nicht nennen, unbind (), jederzeit und überall.
Ist das also bedeuten, wenn die Activity zerstört wurden, die Bindung zerstört wurden und auch der service wird zerstört auch?
Was ist, wenn ich möchte, den service zu werden, der immer ausgeführt wird, zur gleichen Zeit, wenn die Aktivität startet
Ich will es zu binden, so dass ich auf den Dienst zugreifen kann?
Wenn ich call StartService() und dann bindService() in onCreate(), wird es starten Sie den Dienst bei jedem Start der Aktivität. (Die ich auch nicht möchte).
So, ich könnte ich starten service einmal und binden Sie dann das nächste mal starte ich die Aktivität?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
startService
so, dass der Dienst nicht gestoppt, wenn die Aktivität, bindet es zerstört wird.startService
wird, stellen Sie sicher, dass der Dienst ausgeführt wird, selbst wenn die Aktivität zerstört wird (es sei denn, es ist beendet, weil der Speicher-Einschränkungen). Wenn Sie anrufenstartService
, dieonStart
Methode wird aufgerufen, auf dem service. Es nicht neu starten (beenden und erneut starten) des Dienstes. Also es hängt davon ab, wie Sie implementieren dieonStart
Methode für den Dienst. Der Service istonCreate
jedoch wird nur einmal aufgerufen, so können Sie initialisieren möchten, die Dinge dort.Ich habe eine Lösung gefunden!
Das problem ist, wenn Sie schließen Sie Ihre Tätigkeit und Ihr service ist nicht so konfiguriert, dass als Vordergrund-service, android-system erkennt Sie als unbenutzt und schließen Sie es.
hier ist ein Beispiel, wo ich eine Benachrichtigung Hinzugefügt :
(Ein Vordergrund ist ein Dienst, der tut etwas, das der Benutzer aktiv bewusst (wie Musik), und muss für den Benutzer angezeigt als Meldung. Deshalb erstellen wir die Meldung hier)
startForeground()
Methode ?können Sie es mit BroadcastReceivers. findest du eine Menge bei google, wie Sie zu benutzen