转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/41575731
最近做一个gps项目的中途,遇到了一个问题,我调用locationManager.removeUpdates(listener)这个方法后,本以为gps定位就会停止,但是并没有停止gps定位功能,gps信号栏里的还是继续在闪烁,之后就各种百度,也找不到正确的解决方法,然后又去翻墙继续谷歌,最终找到了解决方法,在此记录一下,帮助那些因为这个问题困惑的人。
首先,让我们复习一下正确关闭gps的三个步骤:
第一个步骤:
移除LocationListener
第二个步骤:
将LocationManager置为null
第三个步骤:
将LocationListener置为null
下面是正确关闭gps的代码,名字是由你自己定的
if(_locationManager != null){
_locationManager.removeUpdates(<span style="font-family: Arial, Helvetica, sans-serif;">_locationListener</span>);
_locationManager = null;
}
if(_locationListener != null) {
_locationListener = null;
}
如果这些步骤不起作用,你的gps信号还是在闪烁的话,下面有潜在的两个问题来解决:
第一个原因:这个是最常见,也是最令人沮丧的原因了。你可能有意或无意的实例化了多个LocationManager。最简单的避免这个错误的方法是,将实例LocationManager这个代码放在onResume()事件里面,同时在onPause()方法中关闭它。仔细的控制被你打开的LocationManager并及时关闭它。当你在不同的Activity之间LocationManager,你一定要留心。如果LocationManager正在运行,你又实例化了一个,那么你将不能够如愿用代码关闭它,你就只能通过手动来关闭它。
第二个原因:可能是你手机上的其他的APP已导致这个LocationManager运行中,那么很显然,它将不会通过你的app来关闭,多次检查已消除这个可能性,确保你已经关闭其他所有的可能用到gps定位的APP。