在LocationManager上使用FusedLocationProviderApi有没有什么好处?

更早地获取用户当前位置我已经使用LocationManager:

LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); } else if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); } 

这是很容易阅读和非常简单的代码。

但是我注意到,Google最近在Google Play服务中发布了新的客户端API模型,并build议使用FusedLocationProviderApi ,它看起来更复杂,它是asynchronous的,它需要处理callback等。

在LocationManager上使用FusedLocationProviderApi有没有什么好处?

Solutions Collecting From Web of "在LocationManager上使用FusedLocationProviderApi有没有什么好处?"

FusedLocationProvider使用混合硬件来确定基于请求上下文的位置,这意味着它对您来说是透明的。 它还将caching应用程序之间的捕获位置,以避免不必要的工作来确定位置信息。 因此,如果用户有多种位置感知应用程序,则可能会避免征税(等待)位置捕获,因为可能已经caching了位置。

虽然“地理pipe理器”在足够小的一次性情况下就足够了,但是您应该考虑使用新的替代scheme,因为它的好处可能很大,实施的工作也很简单。

您可以使用它,因为Google Play服务定期通过各种设备进行更新,并不断改进基于位置的function(以及更多)。

在启动时链接到FusedLocationProvider的说明: https : //www.youtube.com/watch?v = Bte_GHuxUGc

在某些情况下FusedLocationProviderperformance糟糕。 例如,如果您想跟踪地图上的path,可能会决定在GPS数据和Wifi数据之间切换。 要计算行驶的精确距离,使用LocationManager强制GPS读数要好得多,特别是如果您还想跟踪哪个wifi没有提供的高度。

请记住, FusedLocationProvider使用封面上的LocationManager来获取GPS点。 它可能正在执行Wifi扫描,并查找结果以确定位置,而不是使用networking提供程序,但是没有任何有关此知识的文档。

除非你不能或不想使用FusedLocationProviderFusedLocationProvider我会推荐使用它。