LocationListener LocationCallback有什么区别?

f47*_*071 11 android google-play-services google-location-services

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

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

PendingResult<Status> requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationListener listener, Looper looper)
Run Code Online (Sandbox Code Playgroud)

它们具有非常相似的签名和描述,唯一的区别在于使用LocationCallback和使用其他用途LocationListener.

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

void onLocationAvailability(LocationAvailability locationAvailability)

void onLocationResult(LocationResult result)
Run Code Online (Sandbox Code Playgroud)

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

abstract void onLocationChanged(Location location)
Run Code Online (Sandbox Code Playgroud)

无视其他方法LocationCallback,这两者之间有什么区别?是否有一些概念差异或特殊用例使一个优先于另一个?复制功能的理由是什么?

ian*_*ake 17

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

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

  • 是的!在许多现代手机上,批量直接在GPS芯片上完成,这意味着主CPU不需要在批次之间完全唤醒,从而导致一些令人印象深刻的电池改进. (3认同)
  • 我喜欢简短的答案,告诉我我需要知道的确切内容! (2认同)