0

GPS を介してユーザーを追跡し、有料橋を渡った場合に通知するアプリを開発しています。

もちろん、サービスで実行するには GPS ロケーション リスナーが必要です。電話がスリープ状態のときに時々実行できるように、部分的なウェイクロックも必要です。また、バッテリーを節約するために、有料橋からの距離に応じて GPS の更新頻度を変えたいと考えています。cwac-WakefulIntent サービスは、私が達成しようとしていることに理想的です。

ただし、このルートに向かう前に、いくつかの問題があることがわかります(駄洒落を許してください;-)。

locationlistener が GPS 更新を返すのを待っている場合でも、doWakefulWork() が完了すると、WakefulIntent サービスは終了し、wakelock を解放しますか?

場所の更新を取得してリスナーをクリーンアップするまで、doWakefulWork が返されないようにするにはどうすればよいですか。

アラーム マネージャがサービスを再開したとき、つまり doWakefulWork() が完了する前に、まだ GPS の更新を待っているとどうなりますか?

サービスのインスタンス間でデータを永続化するにはどうすればよいですか。GPS 座標の配列を SharedPrefs に詰め込むことはできますか?

最後に、有料橋に近づくにつれて、GPS を頻繁に更新する必要があります。doWakefulWork() 内でそれを管理するか、またはサービスによって SharedPrefs に格納された分数で setRepeating() を使用するように scheduleAlarms() を変更して管理しますか。ここでのアイデアは、対象地域への近さに基づいて GPS の使用を抑制することです。

デモ アプリには作業用のテンプレートが用意されていますが、非同期ジョブを実行する WakefulIntentService の確かな例を見つけることができませんでした。

4

1 に答える 1

0

cwac-WakefulIntent サービスは、私が達成しようとしていることに理想的です。

あまり。IntentServiceリスナーを登録できないため、位置追跡には適していません。終了次第、サービスを終了いたしonHandleIntent()ます。

個人的には、自分でこれを台無しにするのではなく、addProxmityAlert()onを使用します。LocationManager

locationlistener が GPS 更新を返すのを待っている場合でも、doWakefulWork() が完了すると、WakefulIntent サービスは終了し、wakelock を解放しますか?

はい。

場所の更新を取得してリスナーをクリーンアップするまで、doWakefulWork が返されないようにするにはどうすればよいですか。

あなたはそうしない。LocationPoller、または、さらに良いことに、 などの他のものを使用しますaddProximityAlert()

アラーム マネージャがサービスを再開したとき、つまり doWakefulWork() が完了する前に、まだ GPS の更新を待っているとどうなりますか?

に見られるように、これを防ぐために適切なタイムアウト ロジックが配置されていることを確認しますLocationPoller

サービスのインスタンス間でデータを永続化するにはどうすればよいですか。GPS 座標の配列を SharedPrefs に詰め込むことはできますか?

はい、またはデータベース、または選択した形式のファイル。

最後に、有料橋に近づくにつれて、GPS を頻繁に更新する必要があります。doWakefulWork() 内でそれを管理するか、またはサービスによって SharedPrefs に格納された分数で setRepeating() を使用するように scheduleAlarms() を変更して管理しますか。

アラームのスケジュールを変更します。

非同期ジョブを実行している WakefulIntentService の確かな例を見つけることができませんでした。

WakefulIntentService 「非同期ジョブ」です他の非同期ジョブは実行しません。

于 2012-04-15T20:47:31.597 に答える