5
    private void setFPAlarm()
    {
    Intent intent = new Intent(this, FPService.class);
    PendingIntent pi = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    long nextSearchTimeMillis = DateUtils.MINUTE_IN_MILLIS/2;
    Time nextSearchTime = new Time();
    nextSearchTime.set(nextSearchTimeMillis);

    AlarmManager FPAlarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    FPAlarm.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), nextSearchTimeMillis, pi);
    }

上記のコードを使用して、30 秒ごとに IntentService を実行しています。場合によっては、サービス プロセスに 30 秒以上かかることがあるため、前のプロセスが完了する前に別のプロセスを開始する必要があります。その場合、前のものがどうなるか知りたいです。保留ですか?2 つ目は前のものが終了するのを待ちますか?

2 番目の質問は、お互いに待たせたくないということです。2 つのサービスを同時に実行したい。したがって、前のサービスが何をしているかに関係なく、次のサービスを開始する必要があります。上記のコードはこれを達成する正しい方法ですか?

4

1 に答える 1

10

IntentService は、作業要求キューのようなものです。新しいインテントは、前のインテントの onHandleIntent が完了するまで処理されません。終了までに 30 秒以上かかる場合があるのに、なぜ 30 秒ごとに IntentService を実行したいのですか?

質問をすることに関して、狭い質問への答えが「やりたいことはできない」または「あなたがしていることはあなたが思っていることをしない」のいずれかであることがあります. 問題のコンテキストを提供すると、回答者がより良い解決策を追加しやすくなります。

あなたの場合、必要なときにいつでも IntentService に Intent を起動し、IntentService のキューイング メカニズムに残りを処理させる必要があると推測できます。別の方法として、通常のサービスとスレッドプールを使用できます。

于 2012-06-29T18:00:32.280 に答える