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()
的回调。
我一直在看和玩 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()
的回调。