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.

  • Différence entre Wakelock et FLAG_KEEP_SCREEN_ON?
  • Montrer par programme la barre d'outils après caché par défilement (Android Design Library)
  • La notification du constructeur est obsolète
  • Comment ajouter json au corps d'une publication http dans java
  • Est-ce que com.android.camera.action.CROP n'est pas disponible pour Android jelly bean 4.3?
  • WebViewClient onReceivedError déconseillé, la nouvelle version ne détecte pas toutes les erreurs
  • Obtenir des informations bitmap à partir du bitmap stocké dans un dossier dessiné
  • FragmentManager IllegalStateException: aucun hôte
  • La ligne Android devient impossible à cocher avec le bouton
  • Cryptage RSA: Différence entre Java et Android
  • Ajouter une coche (✔) à string.xml
  • Android Delayed Notification
  • 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.