From ac5c26409070cb56135ddb0a1ae36d3cabcf854e Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 6 Aug 2014 15:05:26 -0700 Subject: [PATCH] Only close spinner dialogs corresponding to the current activity --- src/com/limelight/AppView.java | 1 + src/com/limelight/Game.java | 2 +- src/com/limelight/utils/SpinnerDialog.java | 16 ++++++++++------ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/com/limelight/AppView.java b/src/com/limelight/AppView.java index 55397ae0..e5b7d3ed 100644 --- a/src/com/limelight/AppView.java +++ b/src/com/limelight/AppView.java @@ -97,6 +97,7 @@ public class AppView extends Activity { protected void onDestroy() { super.onDestroy(); + SpinnerDialog.closeDialogs(this); Dialog.closeDialogs(); } diff --git a/src/com/limelight/Game.java b/src/com/limelight/Game.java index a90e4b88..cecfecef 100644 --- a/src/com/limelight/Game.java +++ b/src/com/limelight/Game.java @@ -254,7 +254,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, OnGenericM protected void onStop() { super.onStop(); - SpinnerDialog.closeDialogs(); + SpinnerDialog.closeDialogs(this); Dialog.closeDialogs(); displayedFailureDialog = true; diff --git a/src/com/limelight/utils/SpinnerDialog.java b/src/com/limelight/utils/SpinnerDialog.java index 3f9bb283..5b304034 100644 --- a/src/com/limelight/utils/SpinnerDialog.java +++ b/src/com/limelight/utils/SpinnerDialog.java @@ -1,6 +1,7 @@ package com.limelight.utils; import java.util.ArrayList; +import java.util.Iterator; import android.app.Activity; import android.app.ProgressDialog; @@ -31,16 +32,19 @@ public class SpinnerDialog implements Runnable,OnCancelListener { return spinner; } - public static void closeDialogs() + public static void closeDialogs(Activity activity) { synchronized (rundownDialogs) { - for (SpinnerDialog d : rundownDialogs) { - if (d.progress.isShowing()) { - d.progress.dismiss(); + Iterator i = rundownDialogs.iterator(); + while (i.hasNext()) { + SpinnerDialog dialog = i.next(); + if (dialog.activity == activity) { + i.remove(); + if (dialog.progress.isShowing()) { + dialog.progress.dismiss(); + } } } - - rundownDialogs.clear(); } }