2010-07-26 12 views
5

我在Android中使用LocationListener掙扎了一下。我想製作一個能夠獲取當前GPS位置的應用程序,然後再進行長時間的睡眠。一天或更多。在這段時間內,我希望GPS通知圖標不顯示。LocationListener正在休眠時關閉GPS圖標

我現在有什麼,是在onLocationChanged一個Thread.sleep(x),但這會保持圖標在休眠期。我如何做到這一點,是否有比使用Thread.sleep更好的方法?

在此先感謝

回答

4

您必須完全關閉LocationManager。我在我的應用程序中執行了此操作,因爲我每10秒鐘只檢查一次位置,因爲我發現,關閉比存儲位置管理器的min_distance或min_time節省了更多的電量。

喜歡的東西:

// Turning off 
mLocationManager.removeUpdates(gpsListener); 
mLocationManager = null; 

// Turning on again 
mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);    
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_MINTIME, GPS_MINDISTANCE, gpsListener); 

的圖標會消失,直到的LocationManager再次開啓。

+0

嘿Fluffball 是啊,我終於找到它了,做了它正是你描述的方式。我還了解到Thread.sleep很糟糕。閱讀Handler類以及如何延遲任務。事實證明這很糟糕,因爲我結束了遞歸函數。由於我有一個可變的延遲,我不能使用repeat-method。 我終於堅持與報警管理器,它的作品就像一個魅力。 感謝您的回覆:) – Andreas 2010-07-31 11:39:06

1

如果你有疊加,認爲對他們關閉的位置太:

@Override 
protected void onResume() 
{ 
    Log.i("ProjetTEA", "onResumeMain"); 
    if (mLocationListener != null) 
    { 
     mLocationOverlay.enableMyLocation(); 
     mLocationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE); 
     mLocationManager.requestLocationUpdates(mBestProvider, 10000, 2, mLocationListener); 
    } 
    super.onResume(); 
} 

@Override 
protected void onPause() 
{ 
    Log.i("ProjetTEA", "onPauseMain"); 
    mLocationOverlay.disableMyLocation(); 
    mLocationManager.removeUpdates(mLocationListener); 
    mLocationManager = null; 
    super.onPause(); 
}