summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-08-11 17:33:02 -0400
committerTobrun <tobrun.van.nuland@gmail.com>2016-08-11 18:13:12 -0400
commit0ae941d2a8a89276e1f0c2cf3870104d0e94fbc4 (patch)
tree553f6c9bc211374834d7734a991bd7f83804e9db /platform/android/MapboxGLAndroidSDK
parenta3e20bae32c17fe976a345e2b38166116d331c1f (diff)
downloadqtlocation-mapboxgl-0ae941d2a8a89276e1f0c2cf3870104d0e94fbc4.tar.gz
[android] #5934 - resolves memory leaks on animators + location listeners
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java8
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java36
2 files changed, 39 insertions, 5 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
index 318eec80b4..54f165ac86 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
@@ -1493,6 +1493,14 @@ public class MapView extends FrameLayout {
if (mMapboxMap.getUiSettings().isZoomControlsEnabled()) {
mZoomButtonsController.setVisible(false);
}
+
+ // make sure we don't leak location listener
+ if (mMyLocationListener != null) {
+ // cleanup to prevent memory leak
+ LocationServices services = LocationServices.getLocationServices(getContext());
+ services.removeLocationListener(mMyLocationListener);
+ mMyLocationListener = null;
+ }
}
// Called when view is hidden and shown
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
index 72f8196091..bfc1711af2 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
@@ -320,11 +320,6 @@ public class MyLocationView extends View {
setBearing(position.bearing);
}
- public void onPause() {
- compassListener.onPause();
- toggleGps(false);
- }
-
public void onResume() {
if (myBearingTrackingMode == MyBearingTracking.COMPASS) {
compassListener.onResume();
@@ -334,6 +329,37 @@ public class MyLocationView extends View {
}
}
+ public void onPause() {
+ compassListener.onPause();
+ toggleGps(false);
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ // cleanup to prevent memory leaks
+ if (locationChangeAnimator != null) {
+ locationChangeAnimator.cancel();
+ locationChangeAnimator = null;
+ }
+
+ if (accuracyAnimator != null) {
+ accuracyAnimator.cancel();
+ accuracyAnimator = null;
+ }
+
+ if (directionAnimator != null) {
+ directionAnimator.cancel();
+ directionAnimator = null;
+ }
+
+ if (userLocationListener != null) {
+ LocationServices services = LocationServices.getLocationServices(getContext());
+ services.removeLocationListener(userLocationListener);
+ userLocationListener = null;
+ }
+ }
+
public void update() {
if (isEnabled()) {
myLocationBehavior.invalidate();