Wie erstelle ich einen immer laufenden Hintergrunddienst? [Duplikat]

8

Meine Frage ist, wie man einen immer laufenden Hintergrunddienst erstellt. Ich habe einen IntentService erstellt, der im Hintergrund läuft, solange die App läuft. Wenn die App jedoch beendet wird, ist der Dienst ebenfalls nicht mehr verfügbar. Ich möchte einen Hintergrunddienst erstellen, der Benachrichtigungen immer ausführt und sendet. (Ähnlich wie WhatsApp, Facebook oder ähnliche Anwendungen.)

Wenn auf die Benachrichtigung geklickt wird, sollte die Anwendung ebenfalls gestartet werden.

Wie kann ich es tun?

    
user3686811 06.06.2014, 08:58
quelle

3 Antworten

10

Dies ist am besten, wenn Sie einen benutzerdefinierten Service erstellen, der den Service Ihres Service nicht erweitert. und starte einen separaten Thread in deinem Dienst. Starten Sie den Dienst beim Starten der App Noch eine wichtige Sache, binden Sie es nicht an irgendein Objekt, weil der Dienst getötet wird, sobald Ihr Objekt zerstört wurde. Dann geben Sie die Methode onStartCommand () START_STICKY zurück Ich werde Ihnen die Beispielimplementierung geben.

%Vor%

}

onTaskRemoved startet Ihren Dienst nach 100 Millisekunden neu, sobald er beendet ist. START_STICKY funktioniert nicht in kitkat. Sie müssen onTAskRemoved implementieren. Und noch eine Sache, wenn der Benutzer zu App-Einstellungen geht und Ihren Dienst stoppt, dann gibt es keine Möglichkeit, ihn neu zu starten

    
Preethi Rao 06.06.2014 09:11
quelle
3

Sie müssen den Dienst mit dem Startbefehl starten. Und Sie müssen onStartCommand-Funktion im Dienst neu schreiben:

%Vor%

START_STIKY bedeutet, dass der Dienst automatisch neu gestartet wird ( Ссылка )

Wenn Sie die Funktion bindService anstelle von startCommand verwenden, wird Ihr Dienst beendet, und alle verbundenen Aktivitäten gehen verloren.

Mehr als das, wenn Sie Ihren Dienst nach dem Booten des Geräts automatisch starten möchten, müssen Sie BroadcastReceiver für den Empfang von ACTION_BOOT_COMPLETED intent implementieren und dieses Ereignis für den Start-Service behandeln.

    
busylee 06.06.2014 09:08
quelle
0

Der folgende Vorgang wird ausgeführt, solange Ihre Aktivität aktiv ist.

%Vor%

Wenn Ihre App gelöscht wird und auf dem Gerät keine Ressourcen mehr verfügbar sind, wird sie automatisch beendet.
Wenn Sie Ihren Dienst jedoch tagelang laufen lassen möchten, stellen Sie sicher, dass Sie den Dienst im Vordergrund ausführen.

    
Lazy Ninja 06.06.2014 09:24
quelle