2016-05-26 3 views
0

In meiner Anwendung starte ich einen Dienst mehrere Male, auch wenn es ausgeführt wird. Es ist ein Dienst, der ständig läuft.Ruft das Aufrufen von stopService() alle wartenden Serviceabsicht auf

Meine Frage hier ist, wenn ich stopService() aufrufen, wird es den laufenden Dienst stoppen und auch den Stapel der wartenden Absicht löschen? Weil ich sicher sein will, dass es nicht mehr läuft.

+1

Sie haben ein IntentService, der ständig läuft? Dies scheint nicht wahrscheinlich. – SlowAndSteady

+0

Sie sind völlig richtig, ich habe einen Tippfehler gemacht, es ist eigentlich ein Service – Jaythaking

+0

Warum starten Sie Ihren Service mehrmals, auch wenn es ein Sticky-Service ist. Kannst du es erklären, ich möchte darüber nachdenken. Es gibt so viele Möglichkeiten, Ihre Servicemethoden ohne erneute Erstellung auszulösen. –

Antwort

0

Ich höre nicht auf Service, es ist STICKYService. Beim Start app ich den Dienst an Steuerung läuft oder nicht mag:

public static boolean isMyServiceRunning(Class<?> serviceClass,Context mContext) { 
    ActivityManager manager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); 
    for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (serviceClass.getName().equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

Verbrauch:

if(!isMyServiceRunning(MyService.class, getApplicationContext())){ 
     startService(new Intent(this, MyService.class)); 
} 

Aber wenn ich logout meinen Benutzer i stoppen bin Service wie:

Intent serviceIntent=new Intent(mContext,MyService.class); 
mContext.getApplicationContext().stopService(serviceIntent); 
+0

Ich habe das auch versucht ... Macht meine Anwendung für bestimmte Anwendungsfälle zum Absturz und wird von vielen Benutzern nicht empfohlen. Siehe diesen Link: http://stackoverflow.com/a/5921190/3457218 – Jaythaking

+0

Wenn Sie das lesen, antworten Sie: "Dies funktioniert zuverlässig, weil es auf den Informationen über das Ausführen von Diensten basiert, die von dem Android-Betriebssystem über ActivityManager bereitgestellt werden." getRunningServices. " Ich denke, einige Informationen, die von Android System zur Verfügung gestellt werden, ist zuverlässiger für mich –

+1

Lesen Sie die Kommentare dort ... "Diese Methode ist nicht wirklich nachhaltig. Es funktioniert nicht auf Android KitKat.", "Diese Methode ist nur für das Debuggen gedacht oder Implementieren von Benutzeroberflächen des Service-Management-Typs. " Es ist nicht für den Kontrollfluss gedacht! "... Ich habe es tatsächlich vorher benutzt, bis es meine App zum Absturz bringt – Jaythaking