Système Android tué mon service quand j'ai effacer toutes les app
J'ai déjà utiliser startforeground()
à mon Service
, mais Android continue de tuer mon Service
quand j'ai effacer toutes les applications récentes.
Voici le code de mon 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;
}
Est-il quelque chose de mal que j'ai fait avec ce code?
vous pouvez utiliser START_REDELIVER_INTENT au lieu de START_STICKY
désolé, mais mon service toujours été tué après l'utilisation.
désolé, mais mon service toujours été tué après l'utilisation.
OriginalL'auteur zamroni hamim | 2016-03-31
Vous devez vous connecter pour publier un commentaire.
Une longue course besoins des services suivants pour le rendre moins susceptible d'être résilié:
Retour
START_STICKY
deonStartCommand()
. Avec cela, le système re-démarrer le service, même s'il doit être arrêté pour les ressources limites.Lorsque le service n'est pas lié à tout composant de l'INTERFACE utilisateur (adresse e.g une Activité), Le service doit aller dans le mode de premier plan, en montrant au premier plan de la notification. De premier plan de services sont moins susceptibles d'être résilié par le système.
Définir l'attribut
"stopWithTask"=false
correspondants<service>
balise de fichier manifest.Aussi, notez que les périphériques de certains fabricants, va mettre fin à des services de même avec les propriétés ci-dessus, en raison de la personnalisation:
Certains services d'application n'ont besoin de rester en arrière-plan et doivent être résolument maintenu en vie. Bien que cette méthode n'est pas recommandée, mais les étapes suivantes peuvent être faites:
Ajouter des déclencheurs de démarrage du service : comme Boot Complet, et Connectés en Réseau des émissions.
Si le service reçoit les intentions/émissions
FLAG_RECEIVER_FOREGROUND
dans l'intention.Une extrême resort est à planifier manuellement en attente d'un esprit de service redémarrer, avec
AlarmManager
, quandonTaskRemoved()
est appelé.Aussi, voir:
mise à jour de répondre avec plus d'options.
Je l'ai eu a travaillé après avoir vu le lien à partir de votre dernière mise à jour à l'aide de "onTaskRemoved()". Précisément, à partir de ce lien à l'intérieur de cette réponse: stackoverflow.com/a/20681898/624109 . Pouvez-vous mettre de la réponse de lien ci-dessus pour votre mise à jour, de sorte que nous pouvons tous voir immédiatement? Je vous remercie.
OriginalL'auteur S.D.
Système Android pouvez arrêter votre service à tout moment quand ils veulent arrêter de maintenir les performances de l'appareil ou de la consommation d'énergie. Il y a beaucoup de situation où le système android peut arrêter votre service comme la pile est faible, l'application n'est pas en état actif pendant une longue période, l'appareil est en mode veille, mode d'économie d'énergie etc.
J'ai développé un truc ou hack(vous pouvez le dire) en utilisant que personne ne peut arrêter votre service (Système Android, les applications Tierces, Utilisateur).
Remarque: En utilisant ce que votre service ne s'arrêtent jamais et peut vider votre batterie aussi.
Suivez les étapes ci-dessous :-
1) Retour START_STICKY dans onStartCommand.
2) Ensuite modifier le onDestroy() et onTaskRemoved() dans votre service comme ci-dessous:
Ici, je suis à la définition d'une alarme chaque fois chaque fois que le service est arrêter (par android système ou par l'utilisateur mannually) et à l'aide de PendindIntent redémarrer le service dans un délai de 10 secondes à chaque fois.
OriginalL'auteur Ameer Faisal
vous pouvez utiliser START_REDELIVER_INTENT au lieu de START_STICKY
L'explication la plus simple de ces pourrait être,
START_STICKY- indique au système pour créer une nouvelle copie du service, lorsqu'il y a suffisamment de mémoire disponible, après il récupère peu de mémoire. Ici, vous perdrez les résultats qui pourraient avoir calculé avant.
START_NOT_STICKY- indique au système de ne pas la peine de redémarrer le service, même lorsqu'il dispose de suffisamment de mémoire.
START_REDELIVER_INTENT- indique au système de redémarrer le service après le crash, et également remettre les intentions qui étaient présents au moment de l'accident.
J'espère que cela va vous aider. grâce
veuillez mettre à jour tout le code de l'activité et de manifester aussi.
OriginalL'auteur rockstar
Veuillez Lire ce Cliquez Ici
Certains d'appareil qui ont coutume android , pas vrai test de android va tuer votre service lorsque vous désactivez l'application récente
oui, c'est vrai qu'une partie de la société de faire des changements dans la structure de base d'android et ce problème est arriver. donc, si vous voulez venir ce problème envoyer exprimés large dans la méthode onDestroy de service et d'enregistrer récepteur de radiodiffusion dans votre application lorsque vous recevez la diffusion de recréer votre service de façon pragmatique. Si vous êtes satisfait avec les et veuillez l'accepter.
OriginalL'auteur J.D.