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

Vad*_*ovs 15 android android-location google-play-services android-maps-utils

为了获得用户当前位置,我使用过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);
}
Run Code Online (Sandbox Code Playgroud)

它易于阅读且代码非常简单.

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

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

小智 16

FusedLocationProvider使用混合硬件根据请求的上下文确定位置,这意味着它对您透明地进行了优化.它还将缓存应用程序之间捕获的位置,以避免不必要的工作来确定位置信息.因此,如果用户拥有各种位置感知应用程序,他们可能会避免对设备征税(并等待)进行位置捕获,因为可能已经缓存了这些应用程序.

虽然ol'LocationManager足以满足小型,一次性的需求,但您应该考虑更新的替代方案,因为好处可能很大,而且实施的工作也很简单.

您也可以使用它,因为Google Play服务会定期在各种设备上更新,并且不断包含对基于位置的功能的改进(以及更多).

启动时FusedLocationProvider解释的链接:https://www.youtube.com/watch?v = BT_GHuxUGc