0

さて、私は興味深い問題を抱えています。画面に最も近いアイテムをいくつか表示するリマインダーのようなウィジェットがあります。それが来るとき、各アイテムの時間。合格したアイテムではなく、将来のアイテムのみを表示する必要があります。定期的な更新は少なくとも30分ごとに実行できるため、私には十分ではありません(私のアイテムには、11.54、12.07などのタイムがあります)。したがって、オプションは1つだけです。サービスをスケジュールします。これにより、任意の間隔(たとえば、5分ごと)で画面を更新できます。

しかし、これは私にとってあまり良くありません。なぜなら、私には2つの要件があり、それらは少し一緒に戦っているからです。

  • 非常に頻繁に実行する(<5分)
  • バッテリーやその他のリソースを使いすぎないでください

だから-インテリジェントアップデートのようなものは可能ですか?たとえば、次のようなアルゴリズムを意味します。

a)デバイスのロックが解除されているとき(=ユーザーが電話で何かをしているとき)に1分ごとに画面を更新しますb)デバイスがスリープしているときは更新しません(ユーザーは更新の結果を見ることができないため、役に立たない)?

または、少なくとも「5分ごとに実行しますが、営業日の午前8時から午後8時までのみ実行する」のようなものですか。シンプルでインテリジェントなサービススケジューリング...

4

1 に答える 1

0

したがって、オプションは1つだけです。サービスをスケジュールします。これにより、任意の間隔(たとえば、5分ごと)で画面を更新できます。

のような他のより効率的なオプションがありますAlarmManager

インテリジェントアップデートのようなものは可能ですか?たとえば、次のようなアルゴリズムを意味します

インテリジェントなアルゴリズムは、リストが変更されたときにのみアプリウィジェットを更新する必要があるという事実を認識します。毎分、秒、またはミリ秒ではありません。

AlarmManagerリストの最初の項目を過ぎて1分間アラームを設定するために使用します。アラームイベントから制御を取得したら、アプリウィジェットを更新し、を使用AlarmManagerして、リストの次回の1分後のアラームを設定します。また、リストが他のソース(UI、同期プロセスなど)から変更されたときにアプリウィジェットを更新します。その場合、以前のアラームが必要になる可能性がある場合は、現在のアラームをキャンセルし、を使用して新しいアラームをスケジュールしAlarmManagerます。

于 2012-06-21T11:02:15.717 に答える