我有一个获取用户位置的应用程序。我已经在 oncreate() 中注册了 locationManager 和 listener。我分别在 onResume() 和 onPause() 中请求并删除了更新。应用程序找到位置并在 onLocationChanged 的 loc 对象上调用 getTime(),这是为了获取外部时间,然后再与系统时间进行比较。这个时间是在 applicationObject 中设置的,以便它在应用程序范围内可用。一切正常,我从 applicationObject 时间设置器方法向用户敬酒。
我发现,当我通过修复用户的位置来找到时间并转到下一个活动时,应用程序会继续获得另外 20 秒甚至更多的时间。
当我在第一个活动的 onPause() 方法中取消注册位置侦听器时,怎么会这样?
@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();
.