Comment empêcher que le service ne s'exécute à nouveau s'il exécute déjà Android

En cliquant sur un bouton, je souhaite démarrer le service en utilisant method startService(new Intent(currentActivity.this,MyService.class)) mais si le service est en cours d'exécution, je ne veux pas appeler cette méthode pour éviter le service de fonctionnement qui fonctionne déjà. Comment Ceci est possible. J'utilise le service Intent et le Service dans le même projet et je veux appliquer la même condition pour les deux.

  • Android - Définir un délai d'attente pour un AsyncTask?
  • Comment utiliser Kotlin avec Proguard
  • Comment ajouter un fichier jar dans le studio Android?
  • Android Studio ne voit pas genymotion
  • Comment les Fragments affectent-ils le principe de l'activité «unique, ciblé que l'utilisateur peut faire»?
  • Chaîne json de format Android dans la sortie LogBB AdB
  • Iterate à travers ListView et obtenir les valeurs de EditText-Field
  • Android: ViewFlipper ou ViewPager - Quelle est la meilleure option?
  • L'émulateur Android 4.0 ne démarre pas
  • Faire défiler un ListView change tout, du blanc au noir
  • IllegalArgumentException: Service non enregistré:
  • Le poids de l'Android ne fonctionne pas correctement
  • 3 Solutions collect form web for “Comment empêcher que le service ne s'exécute à nouveau s'il exécute déjà Android”

    Un service ne s'exécutera qu'une seule fois, de sorte que vous pouvez appeler startService(Intent) plusieurs fois.

    Vous recevrez un onStartCommand() dans le service. Alors garde cela en tête.

    Source: Notez que les appels multiples vers Context.startService() n'incluent pas (bien qu'ils entraînent plusieurs appels correspondants sur onStartCommand() ), donc peu importe combien de fois il est démarré, un service sera arrêté une fois Context.stopService() Ou stopSelf() est appelé; Cependant, les services peuvent utiliser leur stopSelf(int) pour s'assurer que le service n'est pas arrêté tant que les intentions commencées n'ont pas été traitées.

    À: http://developer.android.com/reference/android/app/Service.html sur le sujet: Lifecycle de service

    Utilisez startService() . Start Service appellera onStartCommand() Si le service n'est pas encore lancé, il appellera onCreate() . Initialisez vos variables et / ou lancez un thread dans onCreate() .

    Liez votre service; Lors du démarrage de l'appel:

     Intent bindIntent = new Intent(this,ServiceTask.class); startService(bindIntent); bindService(bindIntent,mConnection,0); 

    Ensuite, pour vérifier si votre service fonctionne, utilisez une méthode comme:

      public static boolean isServiceRunning(String serviceClassName){ final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE); final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE); for (RunningServiceInfo runningServiceInfo : services) { if (runningServiceInfo.service.getClassName().equals(serviceClassName)){ return true; } } return false; } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.