Question

J'ai un problème assez curieux.J'ai un service non lié que j'appelle en utilisant le code ci-dessous depuis mon activité principale lorsque l'application est ouverte.

//some code checks if the service is awake. if not then the code below is called        
Intent serviceIntent = new Intent(this, SMS_Listener_Service.class);
startService(serviceIntent);

Lorsqu'un nouveau SMS arrive, le service attend 3 secondes via une minuterie pour s'assurer que l'observateur de contenu a enregistré les données dans la base de données SMS interne.après cela, il appelle un service d'intention pour faire le gros du travail.

Pour des raisons inconnues, le service se bloque parfois et reste bloqué au "redémarrage (voir image)".

Ce qui est curieux, c'est que même tenter de forcer l'arrêt du service dans la section des applications ne fonctionne pas.Il disparaît momentanément puis réapparaît avec le même message.l'utilisation de stopService dans le code ne fonctionne pas non plus et la méthode OnDestroy au sein du service n'est jamais appelée.La seule façon de contourner ce problème est de redémarrer le téléphone.

Le problème est que lorsqu'il est dans cet état, il ne fonctionne pas. (c'est destiné à analyser les messages SMS entrants)

Je l'utilise sur un Galaxy Note 3 avec Android 4.3

"Hanging Service"

Je soupçonne que l'Intentservice effectuant l'analyse réelle ne se termine pas et que, par conséquent, l'appel au service pour qu'il s'arrête n'est jamais appelé.

Ma question est la suivante : existe-t-il un moyen de forcer l'arrêt d'un service d'intention bloqué ?

c'est le code dans StartCommand dans le service

  public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);

    if (!blnAutoSyncisEnabled) {
        stopSelf();
        return 0;
    } else {
        return START_STICKY;

    }

 }

vue plus détaillée de la même question ici https://stackoverflow.com/posts/21077517/edit

Était-ce utile?

La solution

Ce n'est peut-être pas une solution très élégante mais vous pouvez appeler stopSelf() directement dans le service onCreate() méthode et gérer l'action réelle dans son onDestroy() avant d'appeler super.onDestroy().

J'ai eu un problème similaire que j'ai résolu de cette façon.Peut-être que cela résoudra également votre problème.Bonne chance.;)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top