毎秒電話の場所を保存する場所ログ アプリケーションを開発しています。
LocationManager の更新をサブスクライブするサービスを実装しました。
HandlerThread thread = new HandlerThread("LocationServiceHandler");
locationManager.requestLocationUpdates(GPS_PROVIDER,
1000 /* milliseconds*/, 0 /* meters */, listener, thread.getLooper());
サービスは、アプリケーション コンテキストにバインドすることによって開始されました。
通常、アプリケーションはバックグラウンドで実行され、ユーザーの操作は必要ありません。
通常、建物の周りを歩いているときは問題なく動作します。サービスは毎秒新しい場所とタイムスタンプを取得し、それを外部ストレージにあるファイルに保存します。
しかし、都市から離れた野原に行くと、ログ ファイルのレコード間に 4 ~ 5 分のギャップがあることがわかりました。電話はその瞬間に使用されておらず、大空の下にあり、衛星を遮るものは何も見えなかった. これは不規則に発生し、約 1 時間に 1 回発生し、私のオフィスではこの動作を再現できません。
何が原因でしょうか?どうすれば回避できますか?
端末は Nexus S、Android 2.3.4