11

1 つの問題があります。私の主なアクティビティがサービスを開始し、その後終了します。アプリケーションが次回起動するときに、アプリケーションはこのサービスへの参照を取得して停止する必要があります。しかし、実行中のサービスへの参照を取得する方法がわかりません。助けてください。ありがとうございました。

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 に答える