hold a weak reference of the context to avoid leaks (#7964)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user