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); } }