我有一个非常简单的Android应用程序,可以显示Google地图视图并使用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继续跟踪 - 似乎活动仍在运行:
// ...
case R.id.menu_exit:
finish();
// ...
如果通过移除onPause()
中的位置管理器并致电finish()
,如果无效,请如何停止GPS跟踪?至于我阅读过教程或其他问题,这应该是解决方案..
答案 0 :(得分:7)
您使用的是MyLocationOverlay吗?这为您提供了代表您当前位置的脉动蓝点。我没有在你的示例代码中看到MyLocationOverlay,但我只是仔细检查。
如果您正在使用MyLocationOverlay ...
我已经测试了下面的代码:在按下“退出”菜单命令后退出示例应用程序时,有没有调用“disableMyLocation”。当我调用“disableMyLocation”时,GPS跟踪将关闭。当我没有打电话时,我跟“完成”后GPS跟踪保持打开状态。
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.quit:
myLocOverlay.disableMyLocation(); //turn off location
mlocManager.removeUpdates(this); // no impact on GPS tracking
finish(); //destroy Android app
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 1 :(得分:0)
您确定没有再次进入活动吗?你确定你实际上正在停止GPS吗?尝试制作一个计时器,在2秒后调用mLocationManager.removeUpdates(this),只是为了确保你可以实际停止它。您还可以检查您的活动是否已暂停。