【发布时间】:2012-06-30 01:54:53
【问题描述】:
我创建了一个具有“地理定位”功能的应用程序,该功能负责在 Google 地图上发现用户,就像许多其他应用程序一样。我使用“LocationManager.NETWORK_PROVIDER”定位用户,同时实例化并启动“MyLocationOverlay”(在onLocationChanged() 方法中)以获取位置。因为是第二个,所以 GPS 开启(顶部闪烁),没问题。
问题是,应用程序关闭后(返回按钮或通过任务管理器),GPS 功能仍然挂在那里,试图获取更新。
用户离开活动后如何关闭?我尝试了来自这里和其他论坛的建议,例如将 locationManager.removeUpdates(this); 和 locationManager.removeUpdates(mMyLocationOverlay); 放在方法 onPause()、onStop()、onDestroy() 中。方法OnPause 如下所示:
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
locationManager.removeUpdates(mMyLocationOverlay);
}
('this' 引用了我实现 LocationListener 的类)
请,有人可以帮我在离开活动后关闭 GPS 更新(这是一个扩展 MapActivity 的类),但不关闭手机本身的 GPS 功能吗?
有趣的是,当我使用 MyLocationOverlay 移除部分时,GPS 当然不会启动,因此没有问题。所以我很确定mMyLocationOverlay 是“不会停止”并产生问题的听众。
【问题讨论】:
-
“GPS 功能仍然挂在那里,试图获取更新”——您是如何确定这一点的?
-
通过手机上的 GPS 指示灯,当活动开始时开始闪烁,但在用户离开活动时不会停止...
-
如果“电话”是指“模拟器”,则该图标永远不会消失。