シナリオ - ポスト リクエストを通じてデータ (緯度と経度) を送信するタイマー ベースのイベント スレッドがあります。場所の変更時に呼び出される onLocationChange メソッド (私のクラスは LocationListener で実装) があります。後でタイマーイベントによって呼び出される新しい緯度と経度の値を設定します。
タイマー イベントは、場所の変更イベントで最新の緯度と経度の値を取得しません。タイマーイベントが開始すると、場所が変更されてもonlocationchangeメソッドを呼び出しません。
タイマーイベントは次のとおりです。
/** このメソッドは 10 秒ごとにサービスを呼び出します。*/
protected void timerMethod(CookieStore cookieStore, String url) {
int delay = 1000; // delay for 1 sec.
int period = 10000; // repeat every 10 sec.
timer = new Timer();
if (timer != null) {
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
timerThread = new Thread() {
@Override
public void run() {
sendpostRequest(); // calling the post method
}
};
timerThread.start();
}
}, delay, period);
}
}
場所変更イベントは次のとおりです。
/** このメソッドは、場所が変更されたときに呼び出されます。*/
public void onLocationChanged(Location location) {
isLocationChanged = true; // setting a boolean value which is checked while posting the request
System.out.println();
System.out.println("Location change:::longitude::::" + location.getLongitude() + "latiude::::"
+ location.getLatitude());
latClient = location.getLatitude();
longClient = location.getLongitude();
}