0

以前、デスクトップ環境で、株価アラート システムを実装するために、次のようにしました。

  1. インフィニティ ランニング をスポーンしますThread
  2. スレッドは、株式サーバーから株価クエリを実行します。
  3. スレッドは、取得した株価に基づいて、必要なすべてのアラート アクションを実行します。
  4. スレッドは N 期間スリープします。(N は 30 分としましょう)
  5. 2に戻ります。

モバイル環境に関しては、電力効率の使用が主要な考慮事項です。戻るボタンを使用してアプリケーションを「閉じた」場合でも、在庫アラートメカニズムは実行され続ける必要があります。

私の心から抜け出す方法は2つあります。

サービスを利用する

  1. インフィニティ ランニング をスポーンしますService
  2. このサービスは、株式サーバーから株価クエリを実行します。
  3. このサービスは、取得した株価に基づいて、必要なすべてのアラート アクションを実行します。
  4. サービスは N 期間スリープします。(N は 30 分としましょう)
  5. 2に戻ります。

AlarmManager を使用する

  1. にインストールBroadcastReceiverAlarmManagerます。
  2. BroadcastReceiveronReceiveは、次の N 期間にトリガーされます。
  3. BroadcastReceiverがトリガーされている場合は、株式サーバーから株価クエリを実行します。
  4. BroadcastReceiver は、取得した株価に基づいて、必要なアラート アクションをすべて実行します。
  5. から戻る前に、次の N 期間に別の をonReceiveインストールします。BroadcastReceiverAlarmManager

どの方法がいいの?と悩みました。2つの方法以外に良い方法はありますか?AlarmManager長時間眠る必要がないので、リソースを浪費しているように思えます。

4

1 に答える 1

1

を使用AlarmManagerして をトリガーし、BroadcastReceiverBroadcastReceiver開始しIntentServiceます。

は長時間実行されるタスクを実行するBroadcastReceiverべきではありませんが、作業を開始することはできServiceます。IntentService( を拡張するService) は、ワーカー スレッドで作業を行った後、自己終了します。

IntentServiceを参照してください

IntentServiceクラスの拡張

つまり、検討している両方の方法を組み合わせることができますが、継続的に実行する必要はありませんService

于 2012-12-14T06:13:31.267 に答える