Wie kann ich verhindern, dass meine Android-app/service von "getötet" von einem task-manager?
Ist es sehr wichtig, dass mein Dienst bleiben, bis jemand mit einem Passwort beendet den Dienst von meinem UI screen. Meine app läuft Super, aber es ist entworfen, um ein - /ausgeschaltet werden, indem die Eltern (mit Passwort) auf Ihre Kinder Handys. Ich habe es geschafft, damit alles funktioniert, aber das problem das ich habe ist, dass wenn das Kind verwendet eine task-manager zu töten, die meinen Dienst dann meine app ist nutzlos. Ich wäre sehr dankbar, wer weiß einen Weg, um entweder
1) überwachen Sie den Dienst und starten Sie ihn oben automatisch, wenn seine "getötet"
oder
2) verhindern, dass jemand in der Lage, Sie zu töten, außer aus der Tätigkeit ("Verwaltung" - Bildschirm) , startete der service. Oder beides?
Tut mir Leid, wenn ich mich nicht sehr klar in der Beschreibung das problem, ich bin ein Anfänger. Ich habe große Fortschritte gemacht, so weit, aber ich komme nicht weiter an dieser letzten Hürde.
InformationsquelleAutor der Frage Don | 2010-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mithilfe der API-Methode:
startForeground()
. Hier ist die Erklärung:Hier finden Sie ein Beispiel, wie Sie diese nutzen.
Als für die Frage, die man nicht verhindern kann, dass ein Dienst gekillt werden. Sie können getötet werden durch das system. Auch system-Dienste können getötet werden. Wenn dies geschieht, werden Sie neu gestartet. Sie können den gleichen Ansatz verwenden.
InformationsquelleAutor der Antwort Yury
Gibt es nicht einen Weg, um zu verhindern, dass diese direkt, ohne einen verwurzelt Gerät. Die SDK hilfsbereit verhindert, dass diese Art von Problemen.
Können Sie die "wirklich bösen" trick und habe zwei Leistungen in zwei der Anwendung. Jeder Dienst überwacht die andere, und startet ihn neu, falls es nicht mehr. Dies ist notdürftigem, aber in den meisten Fällen sogar die schnellsten Finger Kind konnte nicht töten beide Anwendungen.
InformationsquelleAutor der Antwort Yann Ramin
Schreiben Sie eine helper-app erhalten android broadcast "android.Absicht.Aktion.PACKAGE_RESTARTED",wenn die app getötet,Ihre Helfer empfangen, die broadcast-und Sie können starten Sie die app oder was auch immer.
Das ist, wie "Smart App Protector-Free' tun.
Das schlechte daran ist, dass Benutzer installieren müssen, zwei apps statt einer.
InformationsquelleAutor der Antwort Tinfu
Für alle, die noch auf der Suche nach einer Antwort - darf man das korrekt sein:
können Sie nicht: machen Sie eine service-unkillable, wenn laufen auf low-Memory-System wird immer Ihren Dienst. ABER
können Sie: Sagen Sie dem System, starten Sie den Dienst neu, wenn es getötet wird. Blick auf dieses Stück code:
public static final int START_REDELIVER_INTENT
Hinzugefügt in der API-level 5
Ständige Rückkehr aus onStartCommand(Intent, int, int):
wenn dieses service-Prozesses getötet wird, während er gestartet wird (nach der Rückkehr aus onStartCommand(Intent, int, int)), dann wird es für eine geplante neu starten und die Letzte gelieferte Vorsatz re-geliefert, um es wieder über onStartCommand(Intent, int, int).
Diese Absicht wird weiterhin geplant für eine erneute Zustellung, bis die service-Aufrufe stopSelf(int) mit der start-ID zur Verfügung gestellt onStartCommand(Intent, int, int). Der Dienst wird nicht erhalten eine onStartCommand(Intent, int, int) - Aufruf mit einem null-Absicht, weil es wird nur neu gestartet, wenn es nicht mit der Bearbeitung fertig alle Absichten geschickt, um es (und alle diese anstehenden Ereignisse geliefert werden an dem Punkt neu starten).
Konstanter Wert: 3 (0x00000003)
InformationsquelleAutor der Antwort Matthew Fisher
Wenn Sie system-level-Berechtigungen verwenden
persistent:true
über manifest-Berechtigungen.https://developer.android.com/guide/topics/manifest/application-element
InformationsquelleAutor der Antwort JoshuaTree
Nur legen Sie den Rückgabetyp als START_TICKY .
InformationsquelleAutor der Antwort prateek gupta