По какой-то причине метод onpause не всегда вызывается, когда мое приложение помещается в фоновом режиме. Либо это, либо MyLocationOverlay
неправильно отключается.activity.onPause не всегда получает вызов
В моем приложении используются карты google и MyLocationOverlay
. При запуске приложения я вызываю MyLocationOverlay.enableMyLocation()
в методе onResume
. В методе я вызываю MyLocationOverlay.disableMyLocation()
. Однако, когда я нажимаю на домашний ключ или обратно, чтобы перейти на главный экран, GPS остается включенным, как показано верхней частью строки состояния с помощью значка gps.
EDIT: Он не работает ни на эмуляторе, ни на телефоне.
EDIT2: значок gps исчезает, когда я использую Advanced Task Killer, чтобы убить его.
EDIT3: onPause определенно вызывается, поскольку я помещаю в него оператор журнала, но значок gps остается. Поэтому похоже, что служба gps не отключается, или MyLocationOverlay
имеет ошибку с методом disableMyLocation()
.
Вот мой файл манифеста и выдержки из моей деятельности:
<?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>
активность
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();
}
Любая помощь будет принята с благодарностью.
Сообщите нам, если это работает, или если вы найдете решение. У меня такая же проблема, и я не использую Admob. – ShadowGod
Я принимаю этот ответ вместо лучшего ответа.Если кто-то придумает более окончательный ответ, я буду переоценивать. – Nemi