Android 是否应该对活动&x27;调用locationManager.RequestLocationUpdate();s OnCreate()?
我有一个ListView,它绑定到一个数据适配器,在我用设备的geoloc(lat/long)创建并加载我的位置对象后,该数据适配器显示固定地标的距离。问题是,平均而言,加载下面的代码需要3-7秒,较长的过程是调用“requestLocationUpdates()”,如果没有网络服务,而GPS服务成为主要服务,则加载有时可能需要几分钟,使我的活动列表视图为空 OnCreate()活动方法是调用requestLocationUpdates()的最佳位置吗 locationManager=(locationManager)getSystemService(Context.LOCATION\u服务); locationListener=新的GeoLocationListener() 使用first在列表视图中显示最新的已知位置以避免显示空列表,然后调用RequestLocationUpdate,在onCreate方法中调用它时,我看不出有任何问题。阅读答案。他们应该给你最大的帮助 我会将Android 是否应该对活动&x27;调用locationManager.RequestLocationUpdate();s OnCreate()?,android,locationmanager,Android,Locationmanager,我有一个ListView,它绑定到一个数据适配器,在我用设备的geoloc(lat/long)创建并加载我的位置对象后,该数据适配器显示固定地标的距离。问题是,平均而言,加载下面的代码需要3-7秒,较长的过程是调用“requestLocationUpdates()”,如果没有网络服务,而GPS服务成为主要服务,则加载有时可能需要几分钟,使我的活动列表视图为空 OnCreate()活动方法是调用requestLocationUpdates()的最佳位置吗 locationManager=(loca
requestLocationUpdates()
放入onResume()
和removeUpdates(这)编码>进入onPause()
。这样,应用程序将在不活动时停止更新的位置。如果您一直需要gps,那么可以将RequestLocationUpdate放入onCreate()中
此外,为了加快gps定位速度,您可以使用最后知道的位置:
mLocationProvider = mLocationManager.getBestProvider(new Criteria(), false);
Location location = mLocationManager.getLastKnownLocation(mLocationProvider);
此外,您可以显示微调器而不是列表,直到您在onLocationChanged(location location)
中获得位置为止。您不应该依赖位置更新来填充listview。
尝试通过调用.getLastKnownLocation()
获取最近已知的位置,然后可能会显示一个指示器,表明您的应用程序正忙于请求更准确的位置
阅读你说得对。。我在等待帮助时遇到了这篇文章:“您可能不关心所有可用的位置提供程序,而只是希望获得可用的最佳位置提供程序。为此,我们指定了“最佳”的标准“。例如,我们是否需要海拔和方位、允许成本等。现在,我们可以向位置经理询问特定供应商最近已知的位置。这有助于在等待更新到来时快速将您放在靠近最后一个位置的位置。“Mahdi击败了您,但你们都是对的,我用代码解决方案评论了他的回答。感谢您的帮助!
mLocationProvider = mLocationManager.getBestProvider(new Criteria(), false);
Location location = mLocationManager.getLastKnownLocation(mLocationProvider);