J'ai une classe publique qui "prolonge le service" et ce service est lancé à partir d'une activité utilisant Startservice (...). Mais après que j'utilise Tâche avancé Killer , le service est tué et jamais redémarré. P>
J'ai remarqué que certaines applications telles que le Facebook Messenger Android App < / a> redémarrez automatiquement même après les avoir tués de Tâche avancée Killer A> ... Comment sont les applications Facebook / Twitter le faire ?? P>
p>
3 Réponses :
faire sur placetcommand () dans votre service retour start_sticky < Pré> xxx pré> p>
Merci, vous répondez également à la réponse de Gdrroid pour l'exemple de code spécifique.
Oncreate () sera appelé après le redémarrage du service?
système Android ou l'utilisateur peut terminer un service à tout moment. Pour cette raison si vous voulez vous assurer que quelque chose est toujours en cours d'exécution, vous pouvez planifier un redémarrage périodique au moyen de la classe AlarmManager. Le code suivant montre comment faire cela.
Calendar cal = Calendar.getInstance(); Intent intent = new Intent(this, MyService.class); PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0); AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); // Start every minute alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 60*1000, pintent);
J'ai fini par utiliser la méthode de retour Start_Sticky de OnstartCommand (...). Merci pour l'extrait de code cependant, semble être pratique dans une variété de situations.
En fonction de la situation et de la manière dont il est essentiel de s'assurer que le service est en cours d'exécution. Pour une application normale, cette alarme vaincue l'objectif, Android Kill Service pour libérer des ressources pour des tâches de système plus importantes, tandis que toutes les alarmes de chaque minute créent une surcharge et n'autoriseront pas le périphérique d'aller dans un sommeil profond! Situations telles que Kiosk Apps, ou lorsque votre application est à l'avant pourrait utiliser une telle approche pour faire certaines choses.
Si vous souhaitez redémarrer votre service automatiquement après avoir été tué par un autre processus, vous pouvez utiliser les constantes suivantes dans votre service, Vous pouvez trouver plus d'informations sur start_sticky & start_non_sticky at, < / p> start_sticky et start_not_sticky P> Veuillez également fournir votre code pour une réponse plus spécifique. P> p>