首页 > 解决方案 > FusedLocationProviderClient 和 FusedLocationProviderApi 的区别

问题描述

使用 new 解决的问题有多大FusedLocationProviderClient 不同,请说明两者在代码级别和内部工作方面的主要区别。FusedLocationProviderApiFusedLocationProviderClient

标签: androidfusedlocationproviderapigoogle-location-servicesfusedlocationproviderclient

解决方案


随着 Google Play Services 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 立即通过以下几种方式改进了代码:

  1. API 调用会自动等待服务连接建立,这样就无需在发出请求之前等待 onConnected。
  2. 它使用 Task API,这使得编写异步操作变得更加容易。
  3. 代码是独立的,可以很容易地移动到共享的实用程序类或类似的东西中。
  4. 您无需了解底层连接过程即可开始编码。

有关更多详细信息,您可以阅读此博客。


推荐阅读