diff options
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java | 12 |
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); } |