2011-08-23 106 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