GPS を介してユーザーを追跡し、有料橋を渡った場合に通知するアプリを開発しています。
もちろん、サービスで実行するには GPS ロケーション リスナーが必要です。電話がスリープ状態のときに時々実行できるように、部分的なウェイクロックも必要です。また、バッテリーを節約するために、有料橋からの距離に応じて GPS の更新頻度を変えたいと考えています。cwac-WakefulIntent サービスは、私が達成しようとしていることに理想的です。
ただし、このルートに向かう前に、いくつかの問題があることがわかります(駄洒落を許してください;-)。
locationlistener が GPS 更新を返すのを待っている場合でも、doWakefulWork() が完了すると、WakefulIntent サービスは終了し、wakelock を解放しますか?
場所の更新を取得してリスナーをクリーンアップするまで、doWakefulWork が返されないようにするにはどうすればよいですか。
アラーム マネージャがサービスを再開したとき、つまり doWakefulWork() が完了する前に、まだ GPS の更新を待っているとどうなりますか?
サービスのインスタンス間でデータを永続化するにはどうすればよいですか。GPS 座標の配列を SharedPrefs に詰め込むことはできますか?
最後に、有料橋に近づくにつれて、GPS を頻繁に更新する必要があります。doWakefulWork() 内でそれを管理するか、またはサービスによって SharedPrefs に格納された分数で setRepeating() を使用するように scheduleAlarms() を変更して管理しますか。ここでのアイデアは、対象地域への近さに基づいて GPS の使用を抑制することです。
デモ アプリには作業用のテンプレートが用意されていますが、非同期ジョブを実行する WakefulIntentService の確かな例を見つけることができませんでした。