package fi.iki.murgo.irssinotifier;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
public abstract class BackgroundAsyncTask<A, B, C> extends AsyncTask<A, B, C> {
private ProgressDialog dialog;
protected final Activity activity;
private final String titleText;
private final String text;
private Callback<C> callback;
private final boolean showDialog;
/**
* This constructor doesn't show dialog
*/
public BackgroundAsyncTask(Activity activity) {
this.activity = activity;
titleText = null;
text = null;
showDialog = false;
}
/**
* Shows dialog with indeterminate progress bar
*/
public BackgroundAsyncTask(Activity activity, String titleText, String text) {
this.activity = activity;
this.titleText = titleText;
this.text = text;
this.showDialog = true;
}
@Override
protected void onPreExecute() {
if (showDialog && dialog == null)
setDialog(ProgressDialog.show(activity, titleText, text, true));
}
@Override
protected void onPostExecute(C result) {
try {
if (dialog != null)
dialog.dismiss();
} catch (Exception e) {
// nothing
}
if (callback != null) {
callback.doStuff(result);
}
}
public Callback<C> getCallback() {
return callback;
}
public void setCallback(Callback<C> callback) {
this.callback = callback;
}
public ProgressDialog getDialog() {
return dialog;
}
public void setDialog(ProgressDialog dialog) {
this.dialog = dialog;
}
}