Android-system tötete meinen Dienst, wenn ich alle löschen " den letzten app
Ich bereits mit startforeground()
an meinem Service
, aber Android hält töten meine Service
wenn ich deaktivieren Sie alle aktuelle apps.
Hier ist der code von meinem Service:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("Text")
.setTicker("Text")
.setContentText("Text")
.setSmallIcon(R.drawable.icon)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.icon))
.build();
startForeground(100, notification);
return START_STICKY;
}
Gibt es etwas falsch ich habe das mit diesem code?
- Sie können START_REDELIVER_INTENT statt START_STICKY
- sorry, aber mein Dienst immer noch getötet werden, nachdem Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lange läuft der service müssen die folgenden, um es weniger wahrscheinlich beendet:
Zurück
START_STICKY
ausonStartCommand()
. Mit diesem, system wird neu starten, der Dienst, auch wenn Sie gestoppt werden, um Einschränkungen für Ressourcen.Wenn der Dienst ist nicht verpflichtet, jede UI-Komponente (e.g eine Aktivität), Der service muss gehen im Vordergrund-Modus zeigt ein Vordergrund-Benachrichtigung. Vorder-Dienstleistungen sind weniger wahrscheinlich beendet, die von system.
Setzen Sie das Attribut
"stopWithTask"=false
in entsprechenden<service>
- tag der manifest-Datei.Beachten Sie auch, dass Geräte von einigen Herstellern erlischt Dienste auch mit den oben genannten Eigenschaften durch Anpassung:
Einige Anwendungs-Dienste tun müssen, um bleiben im hintergrund und werden aggressiv, lebendig gehalten. Obwohl diese Methode nicht empfohlen wird, aber die folgenden Schritte können durchgeführt werden:
Trigger hinzufügen für den Dienst starten : wie Boot Abgeschlossen ist, und Netzwerk-übertragungen.
Wenn service erhält intents/Sendungen
FLAG_RECEIVER_FOREGROUND
in der Absicht.Einer extremen resort ist manuell planen pending intent für service neu starten, mit
AlarmManager
, wennonTaskRemoved()
genannt wird.Finden Sie auch unter:
Android-system stoppen kann Ihren service jederzeit, wenn Sie wollen zu stoppen, um zu halten das Gerät auf Leistung oder Stromverbrauch. Es gibt viele situation, wo android-system kann stop Ihren Dienst wie niedrige Batterie, app befindet sich nicht im aktiven Zustand für eine lange Zeit, Gerät in Schlaf-Modus, Energiespar-Modus, etc.
Entwickelte ich ein trick oder hack(können Sie sagen, dass) mit, dass niemand kann Sie aufhalten, Ihren service (Android-System der Dritten Partei apps, Benutzer).
Hinweis: Durch die Nutzung dieser Ihr Dienst wird nie aufhören und kann drain Ihre Batterie auch.
Folgen Sie den Schritten unten :-
1) Return START_STICKY in onStartCommand.
2) ändern Sie Dann die onDestroy() und onTaskRemoved () - Methode in Ihrem Dienst als unten:
Hier bin ich-Einstellung ein alarm jedes mal, wenn Sie den Dienst stoppen (durch android-system oder durch Benutzer mannually) und mit PendindIntent den Dienst neu starten, innerhalb von 10 Sekunden jedes mal.
können Sie START_REDELIVER_INTENT statt START_STICKY
Die einfachste Erklärung dieser sein könnte,
START_STICKY- sagt das system, um eine frische Kopie der service, wenn ausreichend Arbeitsspeicher verfügbar ist, nachdem er erholt sich von niedrigem Speicher. Hier verlieren Sie die Ergebnisse, die möglicherweise berechnet haben, bevor.
START_NOT_STICKY- sagt, das system nicht zu stören, um den Dienst neu zu starten, auch wenn es über genügend Arbeitsspeicher verfügt.
START_REDELIVER_INTENT- teilt dem system mit, um den Dienst neu starten nach dem crash und auch wieder die Absichten, die vorhanden waren zum Zeitpunkt des Absturzes.
Ich hoffe das wird Ihnen helfen. Dank
Bitte Lesen Sie diese Klicken Sie Hier
Einige der Geräte, die benutzerdefinierte android , nicht wirkliche test der android kill your service, wenn Sie klar letzten Anwendung