2011-08-23 105 views
1

我的應用中有三項活動,所有這些活動都需要訪問服務。因此,如果我啓動三次服務,它將啓動三次或僅啓動一次。如果服務重新啓動時以前的數據將被刪除。服務運行次數

感謝名單

回答

5

如果你是開始服務startService然後第一次它的onCreate方法將被調用,它已經多少次啓動服務並不重要,但它的方法onStartCommand(Intent, int, int)將被調用尊重你的startService調用。無論您撥打startService多少次,致電stopService時都會停止服務。

不要忘記在停止服務器時釋放資源,線程。

你可以參考這個文檔:

http://developer.android.com/reference/android/app/Service.html

-1

可以輕鬆地檢查服務是否與下面的代碼

public boolean isServiceRunning() { 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if ("com.example.app.ServiceClassName".equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

運行時,您還可以在此處詳細瞭解服務的生命週期:http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle

+0

閱讀此問題.. –

3

如果一個Android服務已經啓動,Android將不會再次啓動該服務。 例如呼叫:

Intent intent = new Intent(YourService.class.getName()); 
startService(intent); 

...在幾個獨立的活動(結合IPC監聽器或諸如此類的東西),不會造成服務的新實例。您可以通過查看DDMS看到這一點,你應該看到類似:

com.domain.app 
com.domain.app:remote 

遠程條目是您的服務,而且只會出現一次,你也可以看到這下Android的設置,應用程序上運行的服務你的設備。

至於數據在服務重新啓動時被刪除,這是保存狀態問題,應該存儲任何想要在重新啓動後生存的數據(如殺死應用程序),有關更多詳細信息,請參見http://developer.android.com/guide/topics/data/data-storage.html