2010-09-29 97 views
1

由於某種原因,當我的應用程序放入後臺時,onpause方法並不總是被調用。無論是那個還是MyLocationOverlay都沒有正確禁用。activity.on不總是被調用

我的應用程序使用谷歌地圖和MyLocationOverlay。當啓動應用程序時,我在onResume方法中調用MyLocationOverlay.enableMyLocation()。在方法中,我呼叫MyLocationOverlay.disableMyLocation()。但是,當我按Home鍵或後退鍵進入主屏幕時,GPS會按照帶狀態欄頂部所示的gps圖標繼續運行。

編輯:它不能在模擬器或手機上工作。

編輯2:當我使用高級任務殺手殺死它時,gps圖標只會消失。

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廣告插件。如果我啓動我的應用程序,然後立即打到家裏,gps圖標不會消失。但是,如果我稍後離開應用程序並稍後再回到家中,圖標確實會消失。也許admob插件(我允許獲取位置數據)阻止gps關機,直到它獲得GPS超時或什麼(我只在內部沒有衛星可用的地方進行過測試)。

不知道什麼時候有時間我會,但我會通過移除AdMob插件看到測試,但也許這將幫助別人的同時別人。

EDIT1:更多信息,我發現如果GPS圖標閃爍,它仍然試圖鎖定到一個位置。這是當我退出應用程序時,我的gps指示燈不會消失。但是,如果圖標穩定(指示位置上的鎖定),則在退出應用程序時它將消失。似乎是超時問題。 (我現在沒有一個單元來測試admob假設)。

+0

讓我們知道這是否有效,或者如果您找到解決方案。我有同樣的問題,我不使用Admob。 – ShadowGod 2010-10-01 07:49:13

+0

我接受這個答案來代替更好的答案。如果有人想出更明確的答案,我會重新評估。 – Nemi 2010-10-04 16:38:16

0

但是,當我按Home鍵或返回鍵進入主屏幕時,GPS會一直運行,如狀態欄頂部所示,帶有gps圖標。

如果這是在仿真器上,那是模擬器的問題。一旦GPS狀態圖標出現,它似乎永遠不會消失。

+0

我張貼了類似的問題,一會兒前,GPS圖標從未消失,它不僅在模擬器上 - http://stackoverflow.com/questions/3744498/gps-icon-wont-disappear-when-活動被破壞 – ShadowGod 2010-09-29 18:51:40

+0

看我的編輯。它不適用於仿真器或手機 – Nemi 2010-09-29 20:52:43

相關問題