2013-07-11 13 views
11

एल जाँच करना चाहते हैं, तो एक सेवा चल रही है एल इस कोडजांचें कि एंड्रॉइड पर सेवा चल रही है या नहीं?

public class startServiceOrNo { 
public static void startServiceIfItsNotRuning(Class<?> class1, Context context) { 
    ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (class1.getName().equals(service.service.getClassName())) { 
      Lg.d("servisstart SERVICE ALREADY START" + class1.getName()); 
      return; 
     } 
    } 
    Lg.d("servisstart SSERVICE NEW SERVIS " + class1.getName()); 
    context.startService(new Intent(context, class1)); 
} 

और यह startServiceOrNo.startServiceIfItsNotRuning का उपयोग करें (OfflineChopsMonitor.class, इस)

अगर लिखा एल जांच सेवा एक वर्ग अपने काम से , लेकिन यदि मैं विभिन्न वर्ग से एक ही सेवा की जांच करता हूं, तो इसकी जांच

+0

आप क्या चाहते हैं? क्या आप जांचना चाहते हैं कि सेवा चल रही है या नहीं ?? – ckpatel

+1

कृपया इसे एक http://stackoverflow.com/questions/600207/android-check-if-a-service-is-running –

उत्तर

22

क्यों नहीं है कि आप सेवा को स्वयं ही क्यों समझते हैं?

public class MyService extends Service 
{ 
    private boolean mRunning; 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
     mRunning = false; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) 
    { 
     if (!mRunning) { 
      mRunning = true; 
      // do something 
     } 
     return super.onStartCommand(intent, flags, startId); 
    } 
} 
+2

+1, स्मार्ट, ने उस x के बारे में सोचा नहीं है) – Houssni

+3

लेकिन कैसे क्या आप अपने इरादे से अपनी सेवा वस्तु तक पहुंच प्राप्त करते हैं? – pypmannetjies

+4

यह जांचने के लिए कि सेवा चल रही है या नहीं, आप अन्य क्रियाकलापों/टुकड़ों से इसका उपयोग कैसे करेंगे? –

29

1.) गतिविधि वर्ग में:

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

2.) गैर गतिविधि कक्षा में (BroadcastReceiver):

private boolean isMyServiceRunning(Class<?> serviceClass,Context context) { 
     ActivityManager manager = (ActivityManager)context. getSystemService(Context.ACTIVITY_SERVICE); 
     for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
      if (serviceClass.getName().equals(service.service.getClassName())) { 
       Log.i("Service already","running"); 
       return true; 
      } 
     } 
     Log.i("Service not","running"); 
     return false; 
    } 
6

मैं एक गतिविधि अंदर से निम्नलिखित का उपयोग करें:

private boolean isMyServiceRunning(Class<?> serviceClass) { 
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
    if (serviceClass.getName().equals(service.service.getClassName())) { 
     return true; 
    } 
    } 
    return false; 
} 
संबंधित मुद्दे