web-dev-qa-db-fra.com

Comment garder un IntentService en cours d'exécution même lorsque l'application est fermée?

Dans mon Android Android, je démarre un IntentService à partir d'une activité en appelant

startService(new Intent(this, MyService.class));

Et cela fonctionne comme un charme. Je peux me déplacer entre les activités, appuyer sur le bouton Accueil pour passer à d'autres applications ... et cela fonctionne toujours. Mais si je supprime mon application de l'écran récent, mon service est arrêté. Comment puis-je éviter ça? En d'autres termes, comment puis-je continuer à faire fonctionner mon service même si mon application est fermée des applications récentes?

Mon code de service est le suivant:

public class MyService extends IntentService {

public MyService() {
    super("MyService");
}

@Override
protected void onHandleIntent(Intent intent) {
    //Here I run a loop which takes some time to finish
}

}
19
fergaral

IntentService ne fonctionne pas tout le temps mais il fonctionne sur la base Intent. Vous envoyez, disons une commande à faire (faites un travail), en utilisant Intent et le service exécute ce travail et s'arrête après cela en attendant une autre intention.
Vous devez utiliser l'habituel Service au lieu de IntentService pour atteindre votre objectif. Le service doit être configuré comme START_STICKY.

12
Stan

dans votre classe de service @OverrideonStartCommand méthode

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
}

Pour tuer un service lui-même, vous pouvez utiliser stopSelf ()

5
Sai Phani