From 6429e37c07e98a464a6eaad90b5808185f5ff0a4 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Wed, 12 Feb 2014 20:33:15 -0800 Subject: Minor improvements to background tasks --- .../daneren2005/dsub/activity/SettingsActivity.java | 2 +- src/github/daneren2005/dsub/util/BackgroundTask.java | 14 +++++++++----- src/github/daneren2005/dsub/util/LoadingTask.java | 6 +++--- .../daneren2005/dsub/util/TabBackgroundTask.java | 2 +- src/github/daneren2005/dsub/view/ErrorDialog.java | 18 +++++++++--------- 5 files changed, 23 insertions(+), 19 deletions(-) (limited to 'src/github/daneren2005') diff --git a/src/github/daneren2005/dsub/activity/SettingsActivity.java b/src/github/daneren2005/dsub/activity/SettingsActivity.java index 40ca5570..d496a201 100644 --- a/src/github/daneren2005/dsub/activity/SettingsActivity.java +++ b/src/github/daneren2005/dsub/activity/SettingsActivity.java @@ -557,7 +557,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer } @Override - protected void cancel() { + public void cancel() { super.cancel(); Util.setActiveServer(SettingsActivity.this, previousInstance); } diff --git a/src/github/daneren2005/dsub/util/BackgroundTask.java b/src/github/daneren2005/dsub/util/BackgroundTask.java index 77331c2f..9f5688bc 100644 --- a/src/github/daneren2005/dsub/util/BackgroundTask.java +++ b/src/github/daneren2005/dsub/util/BackgroundTask.java @@ -25,6 +25,7 @@ import java.util.Collection; import java.util.Collections; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.atomic.AtomicBoolean; import org.xmlpull.v1.XmlPullParserException; @@ -42,11 +43,11 @@ public abstract class BackgroundTask implements ProgressListener { private static final String TAG = BackgroundTask.class.getSimpleName(); private final Context context; - private boolean cancelled = false; - private Task task; + protected boolean cancelled = false; + protected Task task; private static final int DEFAULT_CONCURRENCY = 5; - private static final Collection threads = Collections.synchronizedCollection(new ArrayList(DEFAULT_CONCURRENCY)); + private static final Collection threads = Collections.synchronizedCollection(new ArrayList()); protected static final BlockingQueue queue = new LinkedBlockingQueue(10); private static final Handler handler = new Handler(); @@ -86,7 +87,10 @@ public abstract class BackgroundTask implements ProgressListener { protected void error(Throwable error) { Log.w(TAG, "Got exception: " + error, error); - new ErrorDialog(context, getErrorMessage(error), true); + Activity activity = getActivity(); + if(activity != null) { + new ErrorDialog(activity, getErrorMessage(error), true); + } } protected String getErrorMessage(Throwable error) { @@ -136,7 +140,7 @@ public abstract class BackgroundTask implements ProgressListener { private Thread thread; private AtomicBoolean taskStart = new AtomicBoolean(true); - private void execute() { + private void execute() throws Exception { if(!taskStart.get()) { return; } diff --git a/src/github/daneren2005/dsub/util/LoadingTask.java b/src/github/daneren2005/dsub/util/LoadingTask.java index 02668535..c47931ee 100644 --- a/src/github/daneren2005/dsub/util/LoadingTask.java +++ b/src/github/daneren2005/dsub/util/LoadingTask.java @@ -38,13 +38,13 @@ public abstract class LoadingTask extends BackgroundTask { queue.offer(task = new Task() { @Override public void onDone(T result) { - loading.cancel(); + loading.dismiss(); done(result); } @Override public void onError(Throwable t) { - loading.cancel(); + loading.dismiss(); error(t); } }); @@ -52,7 +52,7 @@ public abstract class LoadingTask extends BackgroundTask { @Override protected boolean isCancelled() { - return (tabActivity instanceof SubsonicActivity && ((SubsonicActivity)tabActivity).isDestroyed()) || cancelled; + return (tabActivity instanceof SubsonicActivity && tabActivity.isDestroyed()) || cancelled; } @Override diff --git a/src/github/daneren2005/dsub/util/TabBackgroundTask.java b/src/github/daneren2005/dsub/util/TabBackgroundTask.java index c26f2b0a..bd76a2d4 100644 --- a/src/github/daneren2005/dsub/util/TabBackgroundTask.java +++ b/src/github/daneren2005/dsub/util/TabBackgroundTask.java @@ -19,7 +19,7 @@ public abstract class TabBackgroundTask extends BackgroundTask { public void execute() { tabFragment.setProgressVisible(true); - queue.offer(tab = new Task() { + queue.offer(task = new Task() { @Override public void onDone(T result) { tabFragment.setProgressVisible(false); diff --git a/src/github/daneren2005/dsub/view/ErrorDialog.java b/src/github/daneren2005/dsub/view/ErrorDialog.java index bb70ba7b..e72b1934 100644 --- a/src/github/daneren2005/dsub/view/ErrorDialog.java +++ b/src/github/daneren2005/dsub/view/ErrorDialog.java @@ -33,13 +33,13 @@ import github.daneren2005.dsub.util.Util; */ public class ErrorDialog { - public ErrorDialog(Context context, int messageId, boolean finishActivityOnCancel) { - this(context, context.getResources().getString(messageId), finishActivityOnCancel); + public ErrorDialog(Activity activity, int messageId, boolean finishActivityOnCancel) { + this(activity, activity.getResources().getString(messageId), finishActivityOnCancel); } - public ErrorDialog(final Context context, String message, final boolean finishActivityOnClose) { + public ErrorDialog(final Activity activity, String message, final boolean finishActivityOnClose) { - AlertDialog.Builder builder = new AlertDialog.Builder(context); + AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setTitle(R.string.error_label); builder.setMessage(message); @@ -48,7 +48,7 @@ public class ErrorDialog { @Override public void onCancel(DialogInterface dialogInterface) { if (finishActivityOnClose) { - restart(context); + restart(activity); } } }); @@ -56,7 +56,7 @@ public class ErrorDialog { @Override public void onClick(DialogInterface dialogInterface, int i) { if (finishActivityOnClose) { - restart(context); + restart(activity); } } }); @@ -68,9 +68,9 @@ public class ErrorDialog { } } - private void restart(Context context) { - Intent intent = new Intent(context, SubsonicFragmentActivity.class); + private void restart(Activity activity) { + Intent intent = new Intent(activity, SubsonicFragmentActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - Util.startActivityWithoutTransition(context, intent); + Util.startActivityWithoutTransition(activity, intent); } } -- cgit v1.2.3