关闭应用程序后,GPS更新将不会关闭
我创建了一个应用程序,该应用程序具有“地理定位”功能,可以像在其他许多应用程序中一样,在Google地图上查找用户。我使用“LocationManager.NETWORK_PROVIDER”来定位用户,同时我实例化并启动“MyLocationOverlay”(在onLocationChanged()
方法中)以获取位置。由于第二个,GPS打开(在顶部闪烁),这是正常的。关闭应用程序后,GPS更新将不会关闭
问题是,应用程序关闭后(后退按钮或通过任务管理器),GPS功能仍然挂在那里,试图获取更新。
如何在用户离开活动后关闭它?我尝试了来自这里和其他论坛的建议,例如在方法onPause()
,onStop()
,onDestroy()
内放置locationManager.removeUpdates(this);
和locationManager.removeUpdates(mMyLocationOverlay);
。该方法OnPause
看起来是这样的:
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
locationManager.removeUpdates(mMyLocationOverlay);
}
(“本”引用我的类,它实现LocationListener的)
请,有人可以帮助我在离开活动后关闭GPS更新(它的扩展类MapActivity),但不关闭手机本身的GPS功能?
有趣的是,当我用MyLocationOverlay删除部件时,GPS当然不会启动,因此没有问题。所以我很确定mMyLocationOverlay
是“不会停止”并产生问题的听众。
(0);
因此,当应用程序关闭时,您使用的所有服务都将关闭。
不要在生产代码中使用'System.exit()'。 – CommonsWare
有没有更好的办法呢?我使用System.exit()来处理每个代码。我应该怎样做才能有更好的方式? – irukeru
您不会终止您的过程。 Android将在需要时终止您的流程。您当然不需要终止您的过程以停止使用位置更新。 – CommonsWare
设置你的LocationListener
等于null
,如果你想关闭(或结束)的应用程序,您可以使用
System.exit重新实例onResume()
杰克,感谢您的建议,我试过但仍然一样,GPS指示灯继续闪烁。我想你是指MyLocationOverlay侦听器,因为它是启动GPS更新的人?所以我添加了行 mMyLocationOverlay = null;在onPause(),onStop(),onDestroy()方法中使用 ,但在此没有任何进度。 任何其他idea_ – Leonidas
googleMap.setMyLocationEnabled(false); onPause()中的解决了我的问题。我在OnCreate()中设置为true。希望这可以帮助其他人。 “
”GPS功能仍然挂在那里,试图获取更新“ - 您是如何确定这一点的? – CommonsWare
通过手机上的GPS指示灯,开始活动时开始闪烁,但用户离开活动时不会停止... – Leonidas
如果通过“手机”指“模拟器”,该图标永远不会消失。 – CommonsWare