11

有一个问题 - 我的主要活动启动服务然后关闭。当应用程序下次启动时,应用程序应该获取对该服务的引用并停止它。但我不知道如何获得对正在运行的服务的引用。拜托,我希望你能帮助我。谢谢你。

4

2 回答 2

10

该答案基于@DawidSajdak的答案。他的代码大部分是正确的,但他切换了return语句,所以它给出了与预期结果相反的结果。正确的代码应该是:

private boolean isMyServiceRunning() {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if ("your.service.classname".equals(service.service.getClassName())) {
            return true; // Package name matches, our service is running
        }
    }
    return false; // No matching package name found => Our service is not running
}

if(isMyServiceRunning()) {
    stopService(new Intent(ServiceTest.this,MailService.class));
}
于 2015-09-26T10:46:52.487 回答
-1
private boolean isMyServiceRunning() {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if ("your.service.classname".equals(service.service.getClassName())) {
            return false;
        }
    }
    return true;
}

if(isMyServiceRunning()) {
    stopService(new Intent(ServiceTest.this,MailService.class));
}
于 2012-05-07T12:42:32.357 回答