15

我一直在看和玩FusedLocationProviderApi. 该类包含以下两种方法:

PendingResult<Status> requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationCallback callback, Looper looper)

PendingResult<Status> requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationListener listener, Looper looper)

它们具有非常相似的签名和描述,唯一的区别是一个用途LocationCallback和另一个用途LocationListener

抽象类LocationCallback定义了两个方法:

void onLocationAvailability(LocationAvailability locationAvailability)

void onLocationResult(LocationResult result)

并且接口LocationListener只定义了一种方法

abstract void onLocationChanged(Location location)

忽略中的附加方法LocationCallback,这两者有什么区别?是否存在一些概念差异或特殊用例使一个比另一个更可取?复制功能的基本原理是什么?

4

1 回答 1

19

你会注意到它onLocationResult()返回一个LocationResult - 这使得同时接收多个位置变得更加容易 - 如果你通过设置setMaxWaitTime()正确地批处理位置请求,你会经常遇到这种情况。

如果您选择使用旧的LocationListener,批处理时您将onLocationChanged()连续收到多个回调。

于 2016-07-28T19:24:22.287 回答