Android 是否应该对活动&x27;调用locationManager.RequestLocationUpdate();s OnCreate()?

Android 是否应该对活动&x27;调用locationManager.RequestLocationUpdate();s OnCreate()?,android,locationmanager,Android,Locationmanager,我有一个ListView,它绑定到一个数据适配器,在我用设备的geoloc(lat/long)创建并加载我的位置对象后,该数据适配器显示固定地标的距离。问题是,平均而言,加载下面的代码需要3-7秒,较长的过程是调用“requestLocationUpdates()”,如果没有网络服务,而GPS服务成为主要服务,则加载有时可能需要几分钟,使我的活动列表视图为空 OnCreate()活动方法是调用requestLocationUpdates()的最佳位置吗 locationManager=(loca

我有一个ListView,它绑定到一个数据适配器,在我用设备的geoloc(lat/long)创建并加载我的位置对象后,该数据适配器显示固定地标的距离。问题是,平均而言,加载下面的代码需要3-7秒,较长的过程是调用“requestLocationUpdates()”,如果没有网络服务,而GPS服务成为主要服务,则加载有时可能需要几分钟,使我的活动列表视图为空

OnCreate()活动方法是调用requestLocationUpdates()的最佳位置吗

locationManager=(locationManager)getSystemService(Context.LOCATION\u服务); locationListener=新的GeoLocationListener()

使用first在列表视图中显示最新的已知位置以避免显示空列表,然后调用RequestLocationUpdate,在onCreate方法中调用它时,我看不出有任何问题。

阅读答案。他们应该给你最大的帮助

我会将
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);