我有一个实现 LocationListener 的 Activity。
public class MyActivity extends MapActivity implements LocationListener
在我的活动中,我在 onCreate() 中注册了一个 locationlistener
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, distance, this);
在 onDestroy 方法中,我正在删除我的 locationlistener 的注册。
@Override
protected void onDestroy() {
Utils.addDebugMsg(this,"onDestroy");
lm.removeUpdates(this);
super.onDestroy();
}
在我的应用程序中,我可以更改 minTime 和距离,所以我像这样重新初始化我的监听器:
private void initializeGpsListener() {
lm.removeUpdates(this);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, distance, this);
}
出于调试目的,每当启用提供程序(在本例中为 GPS)时,我都会在屏幕上写入一些内容。
@Override
public void onProviderEnabled(String provider) {
Utils.addDebugMsg(this,"onProviderEnabled : " + provider);
}
我注意到有时,我的活动(或位置监听器)的多个实例被“保留”。每次我打开 GPS 提供程序时,我看到的不是 1 个语句“onProviderEnabled:GPS”,而是我的 Activity 的几个不同实例打印了这一行(同时)。
如何清理这些侦听器(= 我的活动),并确保在整个应用程序中只有 1 个保持活动状态。