Android activity.onPause不总是被调用

Android activity.onPause不总是被调用,android,Android,由于某些原因,当我的应用程序被放到后台时,onpause方法并不总是被调用。这或MyLocationOverlay未正确禁用 我的应用程序使用谷歌地图和MyLocationOverlay。启动应用程序时,我在onResume方法中调用MyLocationOverlay.enableMyLocation()。在onPause方法中,我调用MyLocationOverlay.disablelyLocation()。但是,当我按home(主页)键或back(返回)键进入主页屏幕时,GPS将保持运行状态

由于某些原因,当我的应用程序被放到后台时,onpause方法并不总是被调用。这或
MyLocationOverlay
未正确禁用

我的应用程序使用谷歌地图和
MyLocationOverlay
。启动应用程序时,我在
onResume
方法中调用
MyLocationOverlay.enableMyLocation()
。在
onPause
方法中,我调用
MyLocationOverlay.disablelyLocation()
。但是,当我按home(主页)键或back(返回)键进入主页屏幕时,GPS将保持运行状态,如状态栏顶部的GPS图标所示

编辑:它在模拟器或手机上都不起作用

编辑2:gps图标只有在我使用高级任务杀手杀死它时才会消失

EDIT3:onPause肯定被调用了,因为我在其中放了一条日志语句,但gps图标仍然存在。因此,gps服务似乎没有关闭,或者
MyLocationOverlay
DisableLocation()
方法存在错误

这是我的清单文件和活动摘录:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res/com.tfb"
  package="com.tfb"
  android:versionName="1.2.2" android:versionCode="11">
<application android:icon="@drawable/globe_search" 
     android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <activity android:name=".activity.GarageSaleMap"
              android:label="@string/app_name"
              android:configChanges="keyboardHidden|orientation"
              android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
   </activity>
   <uses-library android:name="com.google.android.maps" />
<meta-data android:value="xxxxxxxxxxx" android:name="ADMOB_PUBLISHER_ID"/>
<meta-data android:value="true" android:name="ADMOB_ALLOW_LOCATION_FOR_ADS"/>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="8"/>
</manifest> 
任何帮助都将不胜感激

但是,当我按home(主页)键或back(返回)键进入主页屏幕时,GPS将保持运行状态,如状态栏顶部的GPS图标所示

如果这是在仿真器上,那就是仿真器的问题。一旦GPS状态图标出现,它似乎永远不会消失

但是,当我按home(主页)键或back(返回)键进入主页屏幕时,GPS将保持运行状态,如状态栏顶部的GPS图标所示


如果这是在仿真器上,那就是仿真器的问题。一旦GPS状态图标出现,它似乎永远不会消失。

我不是肯定的,但我认为这可能是我正在使用的admob广告插件造成的。如果我启动应用程序,然后立即点击主页,gps图标不会消失。然而,如果我让应用程序运行一段时间,然后回来点击主页,图标就会消失。也许admob插件(我允许它获取位置数据)正在阻止gps关机,直到它获得gps超时或其他东西(我只在没有卫星可用的情况下进行了测试)

我不确定什么时候我会有时间,但我将不得不通过删除admob插件来进行测试,以查看,但在此期间,这可能会帮助其他人


EDIT1:更多信息,我发现如果gps图标闪烁,它仍在试图锁定某个位置。这是当我退出应用程序时,我的gps指示器不会消失的时候。但是,如果图标稳定(表示某个位置被锁定),则在退出应用程序时图标将消失。似乎是超时问题。(我现在没有一个装置来测试admob假设)。

我不是肯定的,但我认为这可能是我正在使用的admob广告插件造成的。如果我启动应用程序,然后立即点击主页,gps图标不会消失。然而,如果我让应用程序运行一段时间,然后回来点击主页,图标就会消失。也许admob插件(我允许它获取位置数据)正在阻止gps关机,直到它获得gps超时或其他东西(我只在没有卫星可用的情况下进行了测试)

我不确定什么时候我会有时间,但我将不得不通过删除admob插件来进行测试,以查看,但在此期间,这可能会帮助其他人


EDIT1:更多信息,我发现如果gps图标闪烁,它仍在试图锁定某个位置。这是当我退出应用程序时,我的gps指示器不会消失的时候。但是,如果图标稳定(表示某个位置被锁定),则在退出应用程序时图标将消失。似乎是超时问题。(我现在没有一个单元来测试admob假设)。

我不久前发布了一个类似的问题,GPS图标从未消失,而且它不仅出现在模拟器上——请参见我的编辑。它在emulator或Phone上都不起作用我不久前发布了一个类似的问题,GPS图标从未消失,而且它不仅在emulator上——请参见我的编辑。它在emulator或Phone上都不起作用。请告诉我们这是否有效,或者您是否找到了解决方案。我也有同样的问题,我不使用Admob。我接受这个答案而不是更好的答案。如果有人提出更明确的答案,我会重新评估。让我们知道这是否有效,或者你是否找到了解决方案。我也有同样的问题,我不使用Admob。我接受这个答案而不是更好的答案。如果有人提出更明确的答案,我会重新评估。
private void doMain() {
    mapView = (MapView) findViewById(R.id.mapview);
    MapView localMapView = mapView;

    localMapView.setBuiltInZoomControls(true);
    final MapController controller = localMapView.getController();

    localMapView.getZoomButtonsController().setAutoDismissed(false);

    lastSearchButton = (ImageButton) findViewById(R.id.lastSearchButton);
    lastSearchButton.setOnClickListener(new LastSearchButtonListener(this));

    GeoPoint point = new GeoPoint((int)(40.8138 * 1e6), (int)(-96.6831 * 1e6));//Lincoln, NE
    controller.animateTo(point);
    controller.setZoom(13);

    pushPinItemizedOverlay = getPushPinOverlay();
    localMapView.getOverlays().add(pushPinItemizedOverlay);

    new PopulateMapTask(this).execute(); 

    locationOverlay = new FixedMyLocationOverlay(this, localMapView);
    localMapView.getOverlays().add(locationOverlay);
}

@Override
protected void onPause() {
    locationOverlay.disableMyLocation();
    super.onPause();
}

@Override
protected void onResume() {
    locationOverlay.enableMyLocation();
    super.onResume();
}