2012-06-28 220 views
4

我创建了一个应用程序,该应用程序具有“地理定位”功能,可以像在其他许多应用程序中一样,在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是“不会停止”并产生问题的听众。

+2

”GPS功能仍然挂在那里,试图获取更新“ - 您是如何确定这一点的? – CommonsWare

+0

通过手机上的GPS指示灯,开始活动时开始闪烁,但用户离开活动时不会停止... – Leonidas

+0

如果通过“手机”指“模拟器”,该图标永远不会消失。 – CommonsWare

回答

1

(0);

因此,当应用程序关闭时,您使用的所有服务都将关闭。

+1

不要在生产代码中使用'System.exit()'。 – CommonsWare

+0

有没有更好的办法呢?我使用System.exit()来处理每个代码。我应该怎样做才能有更好的方式? – irukeru

+0

您不会终止您的过程。 Android将在需要时终止您的流程。您当然不需要终止您的过程以停止使用位置更新。 – CommonsWare

1

设置你的LocationListener等于null,如果你想关闭(或结束)的应用程序,您可以使用

System.exit重新实例onResume()

+0

杰克,感谢您的建议,我试过但仍然一样,GPS指示灯继续闪烁。我想你是指MyLocationOverlay侦听器,因为它是启动GPS更新的人?所以我添加了行 mMyLocationOverlay = null;在onPause(),onStop(),onDestroy()方法中使用 ,但在此没有任何进度。 任何其他idea_ – Leonidas

2

googleMap.setMyLocationEnabled(false); onPause()中的解决了我的问题。我在OnCreate()中设置为true。希望这可以帮助其他人。 “