2010-09-29 9 views
1

По какой-то причине метод 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(); 
} 

Любая помощь будет принята с благодарностью.

ответ

1

Я не уверен, но я думаю, что это может быть из плагина admob ad, который я использую. Если я запустил приложение и сразу же ударил его, значок gps не исчезнет. Однако, если я оставлю приложение немного запущенным и вернусь позже и удару домой, значок исчезнет. Может быть, плагин admob (который я получил am, позволяющий получить данные о местоположении) блокирует остановку gps, пока не получит тайм-аут gps или что-то в этом роде (я тестировал только там, где нет спутников).

Не уверен, когда у меня будет время, но мне придется протестировать, удалив плагин admob, чтобы увидеть, но, возможно, это пока поможет кому-то другому.

EDIT1: Дополнительная информация, я обнаружил, что если значок gps мигает, он по-прежнему пытается заблокировать место. Это когда мой индикатор gps не исчезнет, ​​когда я вернусь из приложения. Однако, если значок устойчивый (с указанием блокировки на месте), то он будет исчезать при выходе из приложения. Появляется проблема с тайм-аутом. (У меня нет единицы для проверки гипотезы admob прямо сейчас).

+0

Сообщите нам, если это работает, или если вы найдете решение. У меня такая же проблема, и я не использую Admob. – ShadowGod

+0

Я принимаю этот ответ вместо лучшего ответа.Если кто-то придумает более окончательный ответ, я буду переоценивать. – Nemi

0

Однако, когда я нажимаю домашний ключ или заднюю клавишу, чтобы перейти на главный экран, GPS остается включенным, как показано верхней частью строки состояния с помощью значка gps.

Если это проблема с эмулятором, это проблема с эмулятором. Как только появится значок состояния GPS, он никогда не исчезает.

+0

Недавно я опубликовал аналогичный вопрос, значок GPS никогда не исчезает, и это не только на эмуляторе - http://stackoverflow.com/questions/3744498/gps-icon-wont-disappear-when- разрушенная деятельность – ShadowGod

+0

См. мое редактирование. Он не работает ни на эмуляторе, ни на телефоне. – Nemi

Смежные вопросы