【发布时间】:2010-11-01 15:22:59
【问题描述】:
我有一个非常简单的 Android 应用程序,它显示谷歌地图视图并使用 GPS 来跟踪位置(基本上是这样):
public void onCreate(Bundle savedInstanceState) {
// ...
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// ...
}
public void onResume() {
super.onResume();
mLocationManager.requestLocationUpdates(mProvider, 20000, 1, this);
}
public void onPause() {
super.onPause();
mLocationManager.removeUpdates(this);
}
public void onLocationChanged(Location location) {
mPosition = getGeoPointForLocation(location);
mMapController.setCenter(mPosition);
}
当我使用以下命令退出应用程序(例如通过菜单)时,GPS 继续跟踪 - 似乎 Activity 仍在运行:
// ...
case R.id.menu_exit:
finish();
// ...
如果通过删除onPause() 中的位置管理器并调用finish() 不起作用,我该如何停止GPS 跟踪?据我阅读教程或其他问题,这应该是解决方案..
【问题讨论】:
-
命令 removeUpdates 是正确的。通常最好覆盖 onFinish() 并删除那里的更新。这样,如果活动以退出按钮以外的其他方式被破坏,您会更安全。但是既然你在 onResume 中注册了 locationUpdates,那么在 onPause() 中删除更新不是更有意义吗?
-
顺便说一句 - 与您的问题没有直接关系:以后要获得更多增强的功能,如果您想让应用程序在室内和室外工作并且更精确,请查看此帖子:stackoverflow.com/questions/3145089/…跨度>
-
我已将其移至
onPause()(请参阅原帖),但当我退出应用程序时,GPS 符号仍持续闪烁。谢谢你的链接,我会检查的! -
@shlck: GPS 图标在 Android 模拟器中没有被移除。
-
我使用的是真机(HTC Desire on 2.2)
标签: android android-activity gps