diff options
author | tobrun <tobrun.van.nuland@gmail.com> | 2018-10-29 16:00:44 +0100 |
---|---|---|
committer | tobrun <tobrun.van.nuland@gmail.com> | 2018-10-29 16:02:10 +0100 |
commit | b55d54fffecbce13218c707ddbe63ee63bd98af4 (patch) | |
tree | aacd1e550ed15cd44b5b6716af8e2cfd6e1b1f93 | |
parent | 516a2858a240fbab2e9de37ffc041408b7c48340 (diff) | |
download | qtlocation-mapboxgl-upstream/tvn-dialog-dismiss.tar.gz |
[android] - avoid leaking dialog on orientation changeupstream/tvn-dialog-dismiss
2 files changed, 15 insertions, 3 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java index 5cba2109e2..36753b1264 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java @@ -11,7 +11,6 @@ import android.support.annotation.NonNull; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Toast; - import com.mapbox.mapboxsdk.MapStrictMode; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.R; @@ -24,8 +23,8 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Set; import java.util.Locale; +import java.util.Set; /** * Responsible for managing attribution interactions on the map. @@ -42,6 +41,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt private final Context context; private final MapboxMap mapboxMap; + private AlertDialog alertDialog; private Set<Attribution> attributionSet; public AttributionDialogManager(@NonNull Context context, @NonNull MapboxMap mapboxMap) { @@ -49,6 +49,12 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt this.mapboxMap = mapboxMap; } + public void onStop() { + if (alertDialog != null && alertDialog.isShowing()) { + alertDialog.dismiss(); + } + } + // Called when someone presses the attribution icon on the map @Override public void onClick(View view) { @@ -70,7 +76,8 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.mapbox_attributionsDialogTitle); builder.setAdapter(new ArrayAdapter<>(context, R.layout.mapbox_attribution_list_item, attributionTitles), this); - builder.show(); + // TODO alter API with semver to return alertdialog from this method + alertDialog = builder.show(); } private String[] getAttributionTitles() { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 106026732c..6b06e5d5a2 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -120,6 +120,11 @@ public final class MapboxMap { */ void onStop() { locationComponent.onStop(); + + AttributionDialogManager attrManager = uiSettings.getAttributionDialogManager(); + if (attrManager != null) { + attrManager.onStop(); + } } /** |