2

2つの別々のサービスを起動する2つのアラームがあります。1つは30分ごとに実行され、もう1つは深夜ごとに実行されます。いずれかの日のちょうど00:00に、両方のサービスが実行され、共通のファイルを共有する必要があります。両方のアラームが発生したときに、2つのサービスを次々に実行する方法はありますか(できれば、最初に30分、次に深夜ベースのサービス)。

ファイルアクセサメソッドを同期させようとしましたが(そうすると、サービスは他のメソッドが終了するのを待つ必要があります)、どのサービスを最初に実行するかを制御できません。

4

1 に答える 1

1

2つの簡単なオプションは次のとおりです。

  1. 30分ごとに1つのアラームしかありません。発砲するたびに、真夜中かどうかを確認してください。真夜中にいる場合は、両方のサービスを実行します。
  2. アラームを単一IntentServiceの、または@commonswareで実行することができますWakefulIntentService。これらのクラスは、自動的にキューに入れられ、同時に実行されないように設計されています。そうすれば、一方のサービスが完了すると、もう一方のサービスが自動的に開始されます。つまり、同期は自動的に行われます。

個人的には、最初のオプションを使用します(@commonswareによって推奨されているのを見てきたので、おそらくそれが最良のルートだと思います)。

実行は簡単で、余分なクラスに依存することはなく、どのサービスをいつ実行するかを完全に制御できます。また、必要なアラームは2つではなく、1つだけです。これにより、メンテナンスが簡単になり、消費電力がわずかに向上すると思います。

于 2012-09-13T09:28:40.503 に答える