异步任务封装

2018-05-05  本文已影响12人  OnlyRose
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);
}

上一篇 下一篇

猜你喜欢

热点阅读