2013-06-20 73 views
0

我正在開發一個應用程序,我正在運行一些後臺操作並在某些條件滿足時向用戶顯示通知。當用戶單擊通知時,它應該將他帶到主要活動,而不重新啓動服務。多次調用服務?

我的問題是,當我點擊通知時,它將我帶到主要活動並再次啓動我的服務。我不想再次重新啓動我的服務。如何實現此目的。

我用下面的代碼在檢查天氣服務運行或不租看它

public static boolean isServiceRunning(String serviceName,Context context){ 
boolean serviceRunning = false; 
ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); 
List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50); 
Iterator<ActivityManager.RunningServiceInfo> i = l.iterator(); 
while (i.hasNext()) { 
    ActivityManager.RunningServiceInfo runningServiceInfo = (ActivityManager.RunningServiceInfo) i 
      .next(); 

    if(runningServiceInfo.service.getClassName().equals(serviceName)){ 
     serviceRunning = true; 
    } 
} 
return serviceRunning; 

}

回答

0

我用這段代碼和它的正常工作:)

ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) 
    { 
     if (MyService.class.getName().equals(service.service.getClassName())) 
     { 
      found = true; 
     } 
    } 
0

您可以在活動上檢查getIntent(),並在您檢查啓動或不啓動服務的通知的意圖捆綁上添加一些額外信息。

注意:

如果服務已經在運行,它不會重新啓動。

0
Finally I have rectified my code.as follows 


private boolean isMyServiceRunning() { 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 

     if ("com.example.sevicedemosolution.Myservice".equals(service.service.getClassName().toString())) { 

      return true; 
     } 
    } 
    return false; 
}