ユーザーの位置を取得するアプリがあります。oncreate() に locationManager とリスナーを登録しました。それぞれ onResume() と onPause() で更新をリクエストして削除しました。アプリは場所を見つけて、onLocationChanged の loc オブジェクトで getTime() を呼び出します。これは、外部時間を取得し、後でシステム時間と比較するためです。この時間は、アプリケーション全体で使用できるように applicationObject で設定されます。すべてが正常に動作し、applicationObject 時間セッター メソッドからユーザーに時間を乾杯します。
私が見つけたのは、ユーザーの場所を修正して時間を見つけて次のアクティビティに移動すると、アプリはさらに 20 秒、場合によってはそれ以上の時間を取得し続けることです。
最初のアクティビティの onPause() メソッドで locaction リスナーの登録を解除した場合、これはどのようになりますか?
@Override
protected void onPause() {
mlocManager.removeUpdates(mlocListener);
super.onPause();
}
@Override
protected void onResume() {
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
super.onResume();
}
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
Log.e(TAG, "external time = " + loc.getTime());
DateTime dt = new DateTime(loc.getTime());
DateTimeFormatter df3 = DateTimeFormat.forPattern("yyyy-MM-dd H:mm:ss.SSS");
String formattedNowTime3 = df3.print(dt);
Log.e(TAG, "formatted ext time = " + formattedNowTime3);
nfcscannerapplication.setExternalTime(dt);
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
}//end of MyLocationListener
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entryscreen);
mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mlocListener = new MyLocationListener();
.