如何在android中检查服务是否已经运行?

时间:2012-05-30 13:38:32

标签: java android service android-service

在我的项目中,我在点击按钮时启动服务。 但是,当单击该按钮时,我不想再次启动该服务,除非前一个按钮已经停止。所以我需要先检查服务是否正在运行。我使用了以下方法

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

但它不适合我,它不会给出任何异常,但总是返回false。我现在该怎么办?

2 个答案:

答案 0 :(得分:3)

我认为您的服务未在正在运行的服务中列出的原因是您启动服务的方式。以下提案是您采用方法的same thread

You MUST call startService for your service to be properly registered and
passing BIND_AUTO_CREATE will not suffice.

如下所示:

Intent bindIntent = new Intent(this,ServiceTask.class);
startService(bindIntent);
bindService(bindIntent,mConnection,0);

试试这个,看看它是否适合你。

答案 1 :(得分:0)

您的方法返回false,因为在停止之后,如果没有任何客户端绑定服务,则系统会破坏进程。