diff options
author | Scott Jackson <daneren2005@gmail.com> | 2013-12-13 23:11:45 -0800 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2013-12-13 23:11:45 -0800 |
commit | f109c86bda4cc44cbbd4a812a1a3632781570f45 (patch) | |
tree | 0a2988bc37febb513d40b49f8916d245d1512d26 /src | |
parent | 01b4bfcfd95153008f35de720b46bbf22ef06cbb (diff) | |
download | dsub-f109c86bda4cc44cbbd4a812a1a3632781570f45.tar.gz dsub-f109c86bda4cc44cbbd4a812a1a3632781570f45.tar.bz2 dsub-f109c86bda4cc44cbbd4a812a1a3632781570f45.zip |
#168 Shutdown updater thread while activity isn't visible
Diffstat (limited to 'src')
-rw-r--r-- | src/github/daneren2005/dsub/activity/SubsonicActivity.java | 9 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/view/UpdateView.java | 21 |
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() {
|