f470071
f470071

Reputation: 1567

What is the difference LocationListener LocationCallback?

I have been looking at and playing with the FusedLocationProviderApi. That class contains these two methods:

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

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

They have very similar signatures and descriptions with the only difference being that one uses LocationCallback and the other uses LocationListener.

The abstract class LocationCallback defines two methods:

void onLocationAvailability(LocationAvailability locationAvailability)

void onLocationResult(LocationResult result)

and the interface LocationListener defines just one method

abstract void onLocationChanged(Location location)

Disregarding the additional method in LocationCallback, what is the difference between these two? Is there some conceptual difference or special use case that makes one preferable over the other? What is the rationale in duplicating the functionality?

Upvotes: 17

Views: 7244

Answers (1)

ianhanniballake
ianhanniballake

Reputation: 199825

You'll note that onLocationResult() returns a 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().

If you opt to use the older LocationListener, you'll receive multiple callbacks to onLocationChanged() in a row when batching.

Upvotes: 19

Related Questions