diff options
author | Scott Jackson <daneren2005@gmail.com> | 2015-07-13 19:36:58 -0700 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2015-07-13 19:37:09 -0700 |
commit | a12581051e8bce57c085a50082c47edbe5848036 (patch) | |
tree | 14ddeb684cbea13550ae3c46d0b2c0215d172946 /app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java | |
parent | ad11c8479efb9ebce977edee15cdeb2838deba63 (diff) | |
download | dsub-a12581051e8bce57c085a50082c47edbe5848036.tar.gz dsub-a12581051e8bce57c085a50082c47edbe5848036.tar.bz2 dsub-a12581051e8bce57c085a50082c47edbe5848036.zip |
#527 Change from polling to using DownloadService events
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java')
-rw-r--r-- | app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java index 33d978bf..1492c778 100644 --- a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java +++ b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java @@ -29,6 +29,7 @@ import android.media.AudioManager; import android.os.Build; import android.os.Bundle; import android.os.Environment; +import android.os.Handler; import android.support.design.widget.NavigationView; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v4.app.Fragment; @@ -82,6 +83,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte private static final int MENU_GROUP_SERVER = 10; private static final int MENU_ITEM_SERVER_BASE = 100; + private final List<Runnable> afterServiceAvailable = new ArrayList<>(); private boolean drawerIdle = true; private boolean destroyed = false; private boolean finished = false; @@ -91,6 +93,7 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte protected View secondaryContainer; protected boolean tv = false; protected boolean touchscreen = true; + protected Handler handler = new Handler(); Spinner actionBarSpinner; ArrayAdapter<CharSequence> spinnerAdapter; ViewGroup rootView; @@ -871,13 +874,28 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte for (int i = 0; i < 5; i++) { DownloadService downloadService = DownloadService.getInstance(); if (downloadService != null) { - return downloadService; + break; } Log.w(TAG, "DownloadService not running. Attempting to start it."); startService(new Intent(this, DownloadService.class)); Util.sleepQuietly(50L); } - return DownloadService.getInstance(); + + final DownloadService downloadService = DownloadService.getInstance(); + if(downloadService != null && afterServiceAvailable.size() > 0) { + for(Runnable runnable: afterServiceAvailable) { + handler.post(runnable); + } + afterServiceAvailable.clear(); + } + return downloadService; + } + public void runWhenServiceAvailable(Runnable runnable) { + if(getDownloadService() != null) { + runnable.run(); + } else { + afterServiceAvailable.add(runnable); + } } public static String getThemeName() { |