より長い期間実行されるサービスは、ユーザーに継続的に価値を提供する場合にのみ、実行 (およびエネルギー消費) 時間の価値があります。ポーリングされた場所で何をするかに応じて、短期間だけ価値を提供する場所ポーラーの場合ではありません. この場合、短いタスク (Task
オブジェクトではなく、一般的な意味でのタスクを意味します) を実行するサービスを実装し、サービスを時々実行するようにスケジュールする必要があります。AlarmManagerと呼ばれる Android のスケジューリング メカニズムを使用して、サービスをスケジュールできます。
ただし、このアプローチには固有の問題があります。システムがバッテリーを節約するスリープ状態にある場合、サービスは適切に実行するためにウェイクロックを取得する必要があり、終了したらシステムが復帰するためにウェイクロックを解放する必要があります。睡眠状態。このウェイク ロックの取得/解放メカニズムの実装は簡単な作業ではありません。
自分で実装するのではなく、Commonsware のLocation Poller実装を使用することをお勧めします。これは十分にテストされており、バックグラウンドで実行するサービスのウェイク ロックの取得/解放の問題を解決します。
自分でポーリングを行う必要がある場合 (たとえば、既に作成されたコードを使用する場合)、サービス用に独自のウェイク ロックの取得/解放メカニズムを作成することを避けるために、 Commonsware のWakefulIntentServiceを使用することをお勧めします。使い方はとても簡単です。