MyLocationOverlay不会禁用位置请求

时间:2011-10-12 23:02:50

标签: android

原件: 有没有办法杀死TabActivity的子活动。我有一个非常简单的标签设置。有两个选项卡。其中一个选项卡包含MapActivity。当我切换到MapActivity时,GPS会打开。当我按回时,TabActivity退出,但GPS仍然打开。在我明确杀死应用程序之前,gps不会关闭。有没有办法从TabActivity中杀死MapActivity?当TabActivity退出/ onBackPressed时,我想杀死它。

编辑:
我试图在我的MapActivity中停止onDestroy和onPause中的位置请求。我正在使用MyLocationOverlay类在onDestroy方法中调用disableCompass和disableMyLocation。调用这些方法,但GPS保持打开状态。如果我调用enableMyLocation并立即调用disableMyLocation(在onCreate期间),gps将关闭。

<小时/> 编辑标题以反映答案:
事实证明问题是MyLocationOverlay的启用* /禁用*的意外行为。这些函数似乎不是幂等的。多次启用和禁用调用不会像预期的那样将其打开一次或关闭一次。确保一次调用启用(在onResume中)和一次调用禁用(在onPause中)将在退出活动时禁用位置请求。

3 个答案:

答案 0 :(得分:1)

通过停止活动无法杀死位置服务,您应该阅读更多有关位置服务及其运作方式的信息:

http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

具体而言,当您向提供商请求位置更新时(在您的情况下是GPS提供商),您应该只在一段时间内请求它,然后您需要拨打电话来停止请求。

另见: http://developer.android.com/reference/android/location/LocationManager.html

答案 1 :(得分:0)

最好的办法是覆盖onStop()或onBackPressed()来停止GPS。当您处于其中一个活动中时,您可以选择调用getParent()以返回选项卡活动,作为旁注。

答案 2 :(得分:0)

事实证明,多次调用MyLocationOverlay.enable *()(我调用它两次)会使GPS保持打开状态,即使您多次调用MyLocationOverlay.disable *()。至少,这是我观察到的行为。我希望启用和禁用是幂等的,但它们不是。 Related problem