2012-04-16 78 views
1

我有一個ListView綁定到數據適配器後,我創建並加載我的位置對象與設備的geoloc(拉特/長)後,顯示固定地標的距離。問題是,平均來說,下面的代碼需要3-7秒才能加載,較長的過程是調用「requestLocationUpdates()」,如果沒有NETWORK_SERVICE,並且GPS_SERVICE成爲主要時,有時可能需要幾分鐘才能加載,使我的Activity ListView blank應該在Activity的OnCreate()上調用locationManager.requestLocationUpdates()?

OnCreate()Activity方法是requestLocationUpdates()被調用的最佳位置嗎?

locationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE); locationListener = new GeoLocationListener();

Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 
    criteria.setAltitudeRequired(false); 
    criteria.setBearingRequired(false); 
    criteria.setCostAllowed(false); 
    criteria.setSpeedRequired(false); 
    criteria.setPowerRequirement(Criteria.POWER_LOW); 

    String provider = locationManager.getBestProvider(criteria, true);   

    locationManager.requestLocationUpdates(provider, 
     0, //300000, // TODO: Default to Check Every 5 Minutes OR 
      0, //500, // TODO: Default to Check if device moves more than 500 meters 
      locationListener); 

回答

1

使用getLastKnownLocation首先顯示在列表視圖,以避免顯示然後調用requestLocationUpdates空列表最新已知位置,我看不出有任何問題reagrding稱它在onCreate方法。

+1

你說得對。我跑進這篇文章懸而未決的幫助:「你可能不關心所有可用的位置提供,但只是想提供最好的要做到這一點,我們指定例如,我們是否需要高度和方位,是否需要成本等等 我們現在可以向位置管理員詢問最後一個已知位置,對於特定的提供商。這對於快速將您置於接近最後的位置,同時等待更新進入。「 http://marakana.com/forums/android/examples/42.html – CampbellGolf 2012-04-16 19:38:14

2

閱讀答案here。他們應該幫助你最好。

我會把requestLocationUpdates()分成onResume()removeUpdates(this);分成onPause()。這樣,當您的應用程序處於非活動狀態時,它將停止更新的地點如果你一直需要gps,那麼可以把requestLocationUpdates放入onCreate()。

也加快了GPS定位,你可以使用最後一個已知的位置:

mLocationProvider = mLocationManager.getBestProvider(new Criteria(), false); 
    Location location = mLocationManager.getLastKnownLocation(mLocationProvider); 

此外,您可以顯示一個微調,而不是你的清單,直到你在onLocationChanged(Location location)

0

得到一個位置你不應該取決於位置更新以填充您的列表視圖。 嘗試通過調用.getLastKnownLocation()來獲取最新的已知位置,然後可能顯示一個指示符,表明您的應用正忙於請求更準確的位置。

A deep dive into location

+0

Mahdi毆打你,但你們都是對的,我評論了他對代碼解決方案的迴應。謝謝您的幫助! – CampbellGolf 2012-04-16 19:41:50

相關問題