LocationListener LocationCallback 有什么区别?

What is the difference LocationListener LocationCallback?

我一直在看和玩 FusedLocationProviderApi。 class 包含这两个方法:

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

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

它们具有非常相似的签名和描述,唯一的区别是使用 LocationCallback and the other uses LocationListener

摘要classLocationCallback定义了两个方法:

void onLocationAvailability(LocationAvailability locationAvailability)

void onLocationResult(LocationResult result)

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

abstract void onLocationChanged(Location location)

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

您会注意到 onLocationResult() returns 一个 LocationResult - this makes it a lot easier to deal with receiving multiple locations simultaneously - a case you'll run into quite often if you're properly batching location requests by setting setMaxWaitTime()

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