diff options
author | Scott Jackson <daneren2005@gmail.com> | 2012-07-02 21:24:02 -0700 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2012-07-02 21:24:02 -0700 |
commit | a1a18f77a50804e0127dfa4b0f5240c49c541184 (patch) | |
tree | 19a38880afe505beddb5590379a8134d7730a277 /subsonic-android/src/net/sourceforge/subsonic/androidapp/util/TabActivityBackgroundTask.java | |
parent | b61d787706979e7e20f4c3c4f93c1f129d92273f (diff) | |
download | dsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.tar.gz dsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.tar.bz2 dsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.zip |
Initial Commit
Diffstat (limited to 'subsonic-android/src/net/sourceforge/subsonic/androidapp/util/TabActivityBackgroundTask.java')
-rw-r--r-- | subsonic-android/src/net/sourceforge/subsonic/androidapp/util/TabActivityBackgroundTask.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/subsonic-android/src/net/sourceforge/subsonic/androidapp/util/TabActivityBackgroundTask.java b/subsonic-android/src/net/sourceforge/subsonic/androidapp/util/TabActivityBackgroundTask.java new file mode 100644 index 00000000..033a51ad --- /dev/null +++ b/subsonic-android/src/net/sourceforge/subsonic/androidapp/util/TabActivityBackgroundTask.java @@ -0,0 +1,67 @@ +package net.sourceforge.subsonic.androidapp.util; + +import net.sourceforge.subsonic.androidapp.activity.SubsonicTabActivity; + +/** + * @author Sindre Mehus + * @version $Id$ + */ +public abstract class TabActivityBackgroundTask<T> extends BackgroundTask<T> { + + private final SubsonicTabActivity tabActivity; + + public TabActivityBackgroundTask(SubsonicTabActivity activity) { + super(activity); + tabActivity = activity; + } + + @Override + public void execute() { + tabActivity.setProgressVisible(true); + + new Thread() { + @Override + public void run() { + try { + final T result = doInBackground(); + if (isCancelled()) { + return; + } + + getHandler().post(new Runnable() { + @Override + public void run() { + tabActivity.setProgressVisible(false); + done(result); + } + }); + } catch (final Throwable t) { + if (isCancelled()) { + return; + } + getHandler().post(new Runnable() { + @Override + public void run() { + tabActivity.setProgressVisible(false); + error(t); + } + }); + } + } + }.start(); + } + + private boolean isCancelled() { + return tabActivity.isDestroyed(); + } + + @Override + public void updateProgress(final String message) { + getHandler().post(new Runnable() { + @Override + public void run() { + tabActivity.updateProgress(message); + } + }); + } +} |