diff options
-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() {
|