From 41fa4bda516dd5dbe35c03c30c4e966fc629777a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Tue, 22 Jan 2019 15:24:54 +0100 Subject: [android] fix CameraAnimatorActivity leaks --- .../activity/camera/CameraAnimatorActivity.java | 61 ++++++++++------------ 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimatorActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimatorActivity.java index 48d61abc2a..e278d033be 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimatorActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimatorActivity.java @@ -35,35 +35,30 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe private static final double ANIMATION_DELAY_FACTOR = 1.5; private static final LatLng START_LAT_LNG = new LatLng(37.787947, -122.407432); - private final LongSparseArray animators = new LongSparseArray() { - { - put(R.id.menu_action_accelerate_decelerate_interpolator, () -> { - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playTogether( - createLatLngAnimator(START_LAT_LNG, new LatLng(37.826715, -122.422795)), - obtainExampleInterpolator(new FastOutSlowInInterpolator(), 2500) - ); - return animatorSet; - }); - - put(R.id.menu_action_bounce_interpolator, () -> { - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playTogether( - createLatLngAnimator(START_LAT_LNG, new LatLng(37.787947, -122.407432)), - obtainExampleInterpolator(new BounceInterpolator(), 3750) - ); - return animatorSet; - }); - - put(R.id.menu_action_anticipate_overshoot_interpolator, () -> - obtainExampleInterpolator(new AnticipateOvershootInterpolator(), 2500) - ); - - put(R.id.menu_action_path_interpolator, () -> obtainExampleInterpolator( - PathInterpolatorCompat.create(.22f, .68f, 0, 1.71f), 2500)); - } - }; + private final LongSparseArray animators = new LongSparseArray<>(); + + { + AnimatorSet accelerateDecelerateAnimatorSet = new AnimatorSet(); + accelerateDecelerateAnimatorSet.playTogether( + createLatLngAnimator(START_LAT_LNG, new LatLng(37.826715, -122.422795)), + obtainExampleInterpolator(new FastOutSlowInInterpolator(), 2500) + ); + animators.put(R.id.menu_action_accelerate_decelerate_interpolator, accelerateDecelerateAnimatorSet); + AnimatorSet bounceAnimatorSet = new AnimatorSet(); + bounceAnimatorSet.playTogether( + createLatLngAnimator(START_LAT_LNG, new LatLng(37.787947, -122.407432)), + obtainExampleInterpolator(new BounceInterpolator(), 3750) + ); + animators.put(R.id.menu_action_bounce_interpolator, bounceAnimatorSet); + + animators.put(R.id.menu_action_anticipate_overshoot_interpolator, + obtainExampleInterpolator(new AnticipateOvershootInterpolator(), 2500) + ); + + animators.put(R.id.menu_action_path_interpolator, obtainExampleInterpolator( + PathInterpolatorCompat.create(.22f, .68f, 0, 1.71f), 2500)); + } private MapView mapView; private MapboxMap mapboxMap; @@ -161,7 +156,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe // private Animator obtainExampleInterpolator(int menuItemId) { - return animators.get(menuItemId).build(); + return animators.get(menuItemId); } @Override @@ -198,6 +193,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe private void playAnimation(int itemId) { Animator animator = obtainExampleInterpolator(itemId); if (animator != null) { + animator.cancel(); animator.start(); } } @@ -238,6 +234,9 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe protected void onStop() { super.onStop(); mapView.onStop(); + for (int i = 0; i < animators.size(); i++) { + animators.get(animators.keyAt(i)).cancel(); + } } @Override @@ -274,8 +273,4 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe return latLng; } } - - interface AnimatorBuilder { - Animator build(); - } } -- cgit v1.2.1