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