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