6

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

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。我现在该怎么办?

4

2 回答 2

3

我认为您的服务未在运行服务中列出的原因是您启动服务的方式。以下建议与您使用方法的线程相同。

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);

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

于 2012-05-30T13:52:05.170 回答
0

您的方法返回 false ,因为在停止后,如果没有任何客户端绑定到服务,进程将被系统销毁。

于 2014-07-23T10:29:16.197 回答