用異步任務封裝的網絡請求工具類AssistantTask

package com.qianfeng.assistant.modules.other.utils;

import android.os.AsyncTask;

/**
 * 用異步任務封裝的網絡請求工具類
 * Created by Administrator on 16-3-15.
 */
public class AssistantTask extends AsyncTask<Void,Void,Object> {

    private IRequest request;
    private IRequestCallback callback;

    public AssistantTask(IRequest request, IRequestCallback callback) {

        if(request==null||callback==null){
            throw  new NullPointerException("request or callback can not be null");
        }
        this.request = request;
        this.callback = callback;
    }

    @Override
    protected Object doInBackground(Void... params) {
        return request.doRequest();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
        //publishProgress(values);
    }

    @Override
    protected void onPostExecute(Object object) {
        super.onPostExecute(object);
        if(object==null){
            callback.onError("請求失敗");
        }else {
            callback.OnSuccess(object);
        }
    }

    /**
     * 請求接口
     */
    public interface  IRequest{
        /**
         * 執行請求
         */
        Object doRequest();
    }

    /**
     * 請求回調接口
     */
    public interface  IRequestCallback{
        /**
         * 請求成功的回調方法
         * 請求結果
         * @param object
         */
        void OnSuccess(Object object);

        /**
         * 請求失敗的回調方法
         * 錯誤信息
         * @param msg
         */
        void onError(String msg);
    }
    public interface  IDownLoadProgress{
        /**
         * 更新進度
         * @param progress 百分比
         */
        void updateProgress(int progress);
    }
}
相關文章
相關標籤/搜索