我正在学习使用Google Service API获取位置信息。但我感到困惑,因为我看到人们使用两种方式来获取位置:
1
FusedLocationProviderApi fusedLocationProviderApi = LocationServices.FusedLocationApi;
Location lastKnownLocation = fusedLocationProviderApi.getLastLocation(googleApiClient);
2
FusedLocationProviderClient mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
...
Task<Location> locationTask = mFusedLocationClient.getLastLocation();
locationTask.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
// Got last known location
if (location != null) {
mLastKnownLocation = location;
}
}
});
有人可以向我解释何时使用哪一个&amp;获得最后已知位置的这两种方法之间有什么区别?
答案 0 :(得分:1)
两种getLastLocation
方法都指向了我们相同的文档内容。但使用新的FusedLocationProviderClient
比FusedLocationProviderApi
更简单,因为我们不会处理谷歌API客户端及其回调方法。它自动为我们处理播放服务连接。就这样
FusedLocationProviderClient方法返回Task(甚至获取最后一个已知位置),恕我直言这是由于在内部处理播放服务的事情。
答案 1 :(得分:0)
在Android博客中,谷歌发布了一个关于位置访问的主题。
Reduce friction with the new Location APIs
谷歌表示不要使用GoogleApiClient。
在链接中,他们有详细说明。
现在代码有效,但由于以下几个原因,它并不理想:
更好的开发者体验
新的LocationServices API更简单,并且会使您的代码更不容易出错。连接逻辑自动处理,您只需附加一个完成侦听器: