0

サービスをバックグラウンドで実行する必要がありますが、Android によって強制終了されたままになっている間は、何度も開始する必要があります。また、プログラミングの目的のために、サービスが実行されているかどうかを知る必要があります。これは、2 番目のサービスを同時に開始し、メソッドを 2 回開始し続けるためです。

私はこれまでにこれを試しました:

private boolean isServiceRunning() {
    ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager
            .getRunningServices(Integer.MAX_VALUE)) {
        if (NotificationService.class.getName().equals(
                service.service.getClassName())) {
            return true;
        }
    }
    return false;
}

しかし、私が読んだように、それは私のサービスが開始されたときにのみ可能です

startService(Intent);

たとえば、2分ごとにAlarmManagerでサービスを開始するため、サービスが実行されているかどうかを確認する方法がわかりません。おそらく、サービス開始メソッドを2回以上回避する方法を知っていれば、満足できます.

4

1 に答える 1

0

In services onCreate()メソッドは、サービスが初めて作成されたときに呼び出されます。その中ですべての宣言を行うことができます。

onStartCommand() 

アラームマネージャーから呼び出そうとすると、何度も呼び出されます。

サービスが強制終了されないようにする場合は、別のプロセスでサービスを実行できます。このためには、プロセス間通信 (IPC) が必要になります。

これを行うには、次のようにマニフェスト ファイルでサービスを宣言します。

<service
    android:name="myservice"
    android:process=":my_process">
<service>

android:process 行のコロン(:)my_process は、プロセスの名前が my_process であることを Android システムに伝え、: はそれを宣言するアプリケーションに対してプライベートであることを伝えます。

参照:サービスに関する完全なチュートリアル

于 2012-12-10T14:43:35.163 に答える