服务运行的次数

时间:2011-08-23 07:24:30

标签: android service android-activity

我的应用中有三项活动,所有这些活动都需要访问服务。因此,如果我启动服务三次,它将启动三次或仅启动一次。如果在重新启动服务时将删除先前的数据一次。

感谢名单

3 个答案:

答案 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