在我的应用程序中,我将两个位置管理器用于两个不同的活动。第一个位置管理器是在创建第一个活动时创建的。然后从第一个活动开始,我创建了第二个活动,该活动正在创建第二个位置管理器。在第二个活动中,我试图在按下后退按钮时使用以下代码停止位置管理器更新:
@Override
public void onBackPressed() {
lm.removeUpdates(ll);
ll = null;
lm = null;
finish();
}
ll 和 lm 在第一个和第二个活动中分别全局声明。ll 和 lm 在第二个活动的 onCreate 中使用以下代码进行初始化:
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
问题是,如果我不去第二个活动并停止第一个活动的位置更新,那么我的 Android 中的 GPS 标志就会消失。但是如果我去第二个活动,使用返回按钮回到第一个活动,然后停止第一个活动的位置更新,那么 GPS 位置标志仍然存在。我正在使用同一行代码停止第一个活动的更新:
lm.removeUpdates(ll);
ll = null;
lm = null;
当按下开始按钮时,第一个活动中的 ll 和 lm 被初始化:
public void startClick (View target){
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
}
代码中是否存在任何类型的错误或是否存在任何逻辑错误?提前致谢。