1. 程式人生 > >Callback非同步回撥介面

Callback非同步回撥介面

/**
 * 用於網路請求結果的回撥的抽象類,使用該類可以保證網路請求在主執行緒發起,在子執行緒回撥
 * 使用的非同步任務,並且保證了非同步任務的建立在主執行緒執行
 */
public abstract class Callback<T> {
    private AsyncTask<Void, Void, Void> asyncTask;
    private T obj;
    private int code;
    private boolean status;

    public Callback() {
        asyncTask = new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                return null;
            }

            @Override
            protected void onPostExecute(Void v) {
                if (status)
                    Callback.this.onSuccess(obj);
                else
                    Callback.this.onFailure(code);
            }
        };
    }

    public void notifyUI(T obj, int code, boolean status) {
        this.obj = obj;
        this.code = code;
        this.status = status;
        this.asyncTask.execute();
    }

    protected abstract void onSuccess(T obj);

    protected abstract void onFailure(int code);
}


一個小朋友寫的。