2012-04-16 44 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

相关问题