をキャンセルする必要があります。アンドロイド - GPSの位置更新 - 私は何をしようとしているTimerTaskを
1)x分ごと
2ユーザの位置情報を更新します)は、Webを呼び出すためにタイマーとTimerTaskをを使用します何が起こっている最新の位置情報
記録サービス:
1)TimerTaskを、ユーザの電話が冬眠している場合) を作成している/ SL eeping、Webサービスの呼び出しは、ユーザーの電話がウェイクアップすると、キューに入れられたにTimerTasksのすべてが、その結果、すぐに実行TimerTaskをキュー
4)に格納なっているように見える)
3を動作しません。 Webサービス
に対して複数の不要な位置情報の更新にここでコードスニペットです:
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try
{
//validate that the device has an active & working connection
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = connMgr.getActiveNetworkInfo();
//validate the the device network provider is enabled
if ((eview_locationManagerwifi
.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) && (activeNetwork != null && activeNetwork.getState() == NetworkInfo.State.CONNECTED))
{
UpdateSubscriberLocation(); // call the web service to report location data
}
else
{
this.cancel();
}
}
catch (Exception e)
{
}
TimerTaskをにはないので、ネットワーク接続とプロバイダに対応しているチェックは明らかに「真」を返すの両方でありますゲキャンセルされると、ユーザーの電話機が起動するまで待ち行列に入れられます。
Webサービスからの応答なしで一定の時間が経過した場合、どのようにTimerTaskをキャンセルできますか? TimerTaskで一種の "setTimeout"メソッドを見つけることができませんでした。
を私がTimerTaskを使用する方法を見つけることができれば、それは素晴らしいことです - 定期的に(ユーザーが決めた)このコードを実行する必要があるため、私はこのコードを使用しています。変更することができますが、Timer/TimerTaskの組み合わせを使用せずに、定期的にスケジュールされた間隔でコードが実行されることを確認するにはどうすればいいですか? – JMax2012
実際には答えが見つかった可能性があります。間違いないのですか?そうすればアプリが起動したときにこのメソッドを呼び出すと、xミリ秒ごとに起動する必要があります。 – JMax2012
requestLocationUpdatesの時間間隔は、ロケーションマネージャのヒントに過ぎません。場所が少なくなったり、場所が増えたり、デバイスが休止してもそれ以上のアップデートはありません。 – Stefan