summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java12
1 files changed, 7 insertions, 5 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java
index ff367abe1f..0f3d013043 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java
@@ -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);
}