我的应用中有三项活动,所有这些活动都需要访问服务。因此,如果我启动服务三次,它将启动三次或仅启动一次。如果在重新启动服务时将删除先前的数据一次。
感谢名单
答案 0 :(得分:5)
如果您正在使用startService
开始服务,那么第一次调用它的onCreate
方法并且启动服务的次数无关紧要,但其方法onStartCommand(Intent, int, int)
将会关于你的startService调用被调用。无论您拨打stopService
多少次,拨打startService
时服务都会停止。
当你停止服务时,不要忘记释放资源,线程。
你可以参考这个文档:
http://developer.android.com/reference/android/app/Service.html
答案 1 :(得分: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。
答案 2 :(得分:-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