package com.centforever.ctbasicframework.task;
import android.app.Activity;
import android.os.AsyncTask;
import java.lang.ref.WeakReference;
/**
* Created by mgg on 2016/12/21.
*/
abstract public class SimpleAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result>{
WeakReference<Activity> weakActivity;
public SimpleAsyncTask(Activity activity) {
weakActivity = new WeakReference<Activity>(activity);
}
protected final Result doInBackground(Void... voids) {
return run();
}
private boolean canContinue() {
Activity activity = weakActivity.get();
return activity != null && activity.isFinishing() == false;
}
@Override
protected void onPostExecute(Result t) {
if(canContinue()) {
onSuccess(t);
}
}
abstract protected Result run();
abstract protected void onSuccess(Result result);
}
网友评论