Android:检查我的服务是否在后台运行

时间:2012-10-15 08:34:40

标签: android service

我正在运行服务,以便在我的应用程序中每1小时获取通知

服务肯定每1小时运行一次;我使用Logcat检查了它。

但是,由于我在MainActivity的onResume()中启动此服务,因此我想检查服务是否已在运行,并且仅在服务未运行时启动它。

我使用了这段代码:

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

但我总是得到 false

所以我检查了输出service.service.getClassName()给出了什么。我的服务不在列表中。

是因为我的申请未知吗?或其他什么?

2 个答案:

答案 0 :(得分:0)

我知道它有点迟了但这个答案可能会帮助那些正在寻找相同的人。

您是否使用context.startService()启动了服务? 确保清单文件包含以下内容:

<service android:name="com.android.MyApp.MyServices.NotificationsService" />

答案 1 :(得分:0)

private boolean isMyServiceRunning(Context mContext) {
    ActivityManager manager = (ActivityManager) mContext
            .getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager
            .getRunningServices(Integer.MAX_VALUE)) {
        if (**HERE_YOUR_SERVICE'S_CLASS_NAME**.class.getName().equals(
                service.service.getClassName())) {
            return true;
        }
    }
    return false;
}

//我有后台GPS服务,我已成功检查我的GPS服务是否正在运行。

//快乐编码......