aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2013-12-13 23:11:45 -0800
committerScott Jackson <daneren2005@gmail.com>2013-12-13 23:11:45 -0800
commitf109c86bda4cc44cbbd4a812a1a3632781570f45 (patch)
tree0a2988bc37febb513d40b49f8916d245d1512d26
parent01b4bfcfd95153008f35de720b46bbf22ef06cbb (diff)
downloaddsub-f109c86bda4cc44cbbd4a812a1a3632781570f45.tar.gz
dsub-f109c86bda4cc44cbbd4a812a1a3632781570f45.tar.bz2
dsub-f109c86bda4cc44cbbd4a812a1a3632781570f45.zip
#168 Shutdown updater thread while activity isn't visible
-rw-r--r--src/github/daneren2005/dsub/activity/SubsonicActivity.java9
-rw-r--r--src/github/daneren2005/dsub/view/UpdateView.java21
2 files changed, 29 insertions, 1 deletions
diff --git a/src/github/daneren2005/dsub/activity/SubsonicActivity.java b/src/github/daneren2005/dsub/activity/SubsonicActivity.java
index 4e57a9a4..bc239b4b 100644
--- a/src/github/daneren2005/dsub/activity/SubsonicActivity.java
+++ b/src/github/daneren2005/dsub/activity/SubsonicActivity.java
@@ -62,6 +62,7 @@ import github.daneren2005.dsub.util.Constants;
import github.daneren2005.dsub.util.ImageLoader;
import github.daneren2005.dsub.util.Util;
import github.daneren2005.dsub.view.DrawerAdapter;
+import github.daneren2005.dsub.view.UpdateView;
import java.io.File;
import java.io.PrintWriter;
@@ -135,6 +136,14 @@ public class SubsonicActivity extends ActionBarActivity implements OnItemSelecte
}
populateDrawer();
+ UpdateView.addActiveActivity();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+
+ UpdateView.removeActiveActivity();
}
@Override
diff --git a/src/github/daneren2005/dsub/view/UpdateView.java b/src/github/daneren2005/dsub/view/UpdateView.java
index 1b4e55d8..948e9fd1 100644
--- a/src/github/daneren2005/dsub/view/UpdateView.java
+++ b/src/github/daneren2005/dsub/view/UpdateView.java
@@ -38,10 +38,11 @@ import github.daneren2005.dsub.R;
public class UpdateView extends LinearLayout {
private static final String TAG = UpdateView.class.getSimpleName();
private static final WeakHashMap<UpdateView, ?> INSTANCES = new WeakHashMap<UpdateView, Object>();
-
+
private static Handler backgroundHandler;
private static Handler uiHandler;
private static Runnable updateRunnable;
+ private static int activeActivities = 0;
protected Context context;
protected ImageButton starButton;
@@ -124,6 +125,12 @@ public class UpdateView extends LinearLayout {
private static void updateAll() {
try {
+ // If nothing can see this, stop updating
+ if(activeActivities == 0) {
+ activeActivities--;
+ return;
+ }
+
List<UpdateView> views = new ArrayList<UpdateView>();;
for (UpdateView view : INSTANCES.keySet()) {
if (view.isShown()) {
@@ -168,6 +175,18 @@ public class UpdateView extends LinearLayout {
}
});
}
+
+ public static void addActiveActivity() {
+ activeActivities++;
+
+ if(activeActivities == 0 && uiHandler != null && updateRunnable != null) {
+ activeActivities++;
+ uiHandler.post(updateRunnable);
+ }
+ }
+ public static void removeActiveActivity() {
+ activeActivities--;
+ }
protected void updateBackground() {