hold a weak reference of the context to avoid leaks (#7964)

This commit is contained in:
Pablo Guardiola
2017-02-07 17:15:20 +01:00
committed by GitHub
parent 9279b198df
commit 3916090a24

View File

@@ -13,6 +13,8 @@ import com.mapzen.android.lost.api.LocationRequest;
import com.mapzen.android.lost.api.LocationServices;
import com.mapzen.android.lost.api.LostApiClient;
import java.lang.ref.WeakReference;
/**
* Manages locational updates. Contains methods to register and unregister location listeners.
* <ul>
@@ -36,13 +38,13 @@ public class LocationSource extends LocationEngine implements
private static LocationEngine instance;
private Context context;
private WeakReference<Context> context;
private LostApiClient lostApiClient;
public LocationSource(Context context) {
super();
this.context = context;
lostApiClient = new LostApiClient.Builder(context)
this.context = new WeakReference<>(context);
lostApiClient = new LostApiClient.Builder(this.context.get())
.addConnectionCallbacks(this)
.build();
}
@@ -88,7 +90,7 @@ public class LocationSource extends LocationEngine implements
@Override
public Location getLastLocation() {
if (lostApiClient.isConnected() && PermissionsManager.areLocationPermissionsGranted(context)) {
if (lostApiClient.isConnected() && PermissionsManager.areLocationPermissionsGranted(context.get())) {
//noinspection MissingPermission
return LocationServices.FusedLocationApi.getLastLocation(lostApiClient);
}
@@ -114,7 +116,7 @@ public class LocationSource extends LocationEngine implements
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
if (lostApiClient.isConnected() && PermissionsManager.areLocationPermissionsGranted(context)) {
if (lostApiClient.isConnected() && PermissionsManager.areLocationPermissionsGranted(context.get())) {
//noinspection MissingPermission
LocationServices.FusedLocationApi.requestLocationUpdates(lostApiClient, request, this);
}