在我的应用程序中,我为两个不同的活动使用了两个位置管理器。第一个位置管理器是在创建第一个活动时创建的。然后从第一个活动开始,我创建了第二个活动,即创建第二个位置管理器。在第二个活动,我尝试使用下面的代码按下后退按钮何时停止位置管理器更新:为什么位置管理器在我将其设置为空时仍处于开启状态?
@Override
public void onBackPressed() {
lm.removeUpdates(ll);
ll = null;
lm = null;
finish();
}
LL和LM在第一和第二活性全局声明seperatly。 LL和LM使用下面的代码在第二活动的onCreate初始化:
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
的问题是,如果我不去的第二个活动,并停止在第一个活动的位置更新,那么GPS标志我Android会消失。但是如果我参加第二项活动,请使用后退按钮返回到第一项活动,然后停止第一项活动的位置更新,然后GPS位置标记仍然存在。我使用的代码的同一行停止在第一个活动更新:
public void startClick (View target){
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
}
是否有任何错误的:
lm.removeUpdates(ll);
ll = null;
lm = null;
LL和第一个活动流明当按下启动按钮被初始化代码还是有任何逻辑错误?提前致谢。
请显示更多的代码。如何定义'll'和'lm'?他们是如何初始化的? – 2012-07-09 16:11:03
编辑我的问题。请看看,如果有什么困惑,然后让我知道。 – Piscean 2012-07-09 16:21:38
出于兴趣,为什么不停止onPause中的更新onBackPressed。如果用户在应用程序中按Home键,它仍然会收到更新,即使它不在前台... – barry 2012-07-09 16:39:53