FusedLocationProviderClient
与FusedLocationProviderApi
有何不同?使用新的FusedLocationProviderClient
可以解决什么问题,请说明代码级和两者内部工作的主要区别。
最佳答案
在Google Play服务的11.0.0版本中,引入了一种访问LocationServices的新方法。现在,不需要某些手动管理的功能,例如连接到Play服务。
新的LocationServices API更加简单,将使您的代码更易于出错。连接逻辑是自动处理的,您只需要附加一个完成监听器即可:
FusedLocationProviderClient client =
LocationServices.getFusedLocationProviderClient(this);
client.requestLocationUpdates(LocationRequest.create(), pendingIntent)
.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
Log.d("MainActivity", "Result: " + task.getResult());
}
});
新的API立即通过以下几种方式改进了代码:
API调用会自动等待建立服务连接,从而无需在发出请求之前等待onConnected。
它使用Task API,使编写异步操作更加容易。
该代码是独立的,可以轻松地移入共享实用程序类或类似的类中。
您无需了解基础连接过程即可开始编码。
有关更多详细信息,您可以阅读this blog.