android 請求網路非同步載入

來源:互聯網
上載者:User

標籤:

/** * 封裝ProecssDialog對話方塊 * */public class LoadDialog extends ProgressDialog {private String title = "進度對話方塊";private String message = "載入資料中....";public LoadDialog(Context context, int theme) {super(context, theme);}/** * 用預設的標題和內容來建立對話方塊 * @param context */public LoadDialog(Context context) {super(context);initDialog();}/** * 用指定的標題和內容來建立對話方塊 * @param context * @param title * @param message */public LoadDialog(Context context,String title,String message){super(context);if(title != null){this.title = title;}if(message != null){this.message = message;}initDialog();}/** * 初始化對話方塊參數,預設對話方塊不能夠取消 */public void initDialog(){setTitle(title);setMessage(message);setProgressStyle(ProgressDialog.STYLE_SPINNER);setCancelable(false);}/** * 開啟對話方塊。設定回調方法,傳遞須要運行業務方法的類模板,方法名和參數列表 * @param callback 回調方法,該方法在對話方塊關閉後回調,並擷取返回的資料 * @param serviceClass 運行業務方法的類模板 * @param method 運行業務方法的方法名 * @param params 運行業務方法的參數列表 */public void execute(Callback callback,Class serviceClass,String method,Object... params){super.show();ServiceAysnTask task = new ServiceAysnTask(callback,serviceClass,method);task.execute(params);}/** * 回調方法的介面 * */public interface Callback{public void getResult(Map map);}/** * 與遠程服務通訊的線程類 * @author BDK * AsyncTask  非同步任務 */private class ServiceAysnTask extends AsyncTask<Object,Object,Map>{private Class serviceClass;private String method;private Callback callback;public ServiceAysnTask(Callback callback,Class serviceClass,String method){this.callback = callback;this.serviceClass = serviceClass;this.method = method;}@Overrideprotected Map doInBackground(Object... params) {Map resultMap = null;try {Object obj = serviceClass.newInstance();//建立類模板對象Class [] paramTypes = new Class[params.length];for (int i = 0; i < paramTypes.length; i++) {paramTypes[i] = params[i].getClass();}//依據類模板得到方法Method m = serviceClass.getMethod(method, paramTypes);resultMap = (Map) m.invoke(obj, params);} catch (Exception e) {e.printStackTrace();} LoadDialog.this.cancel();return resultMap;}@Overrideprotected void onPostExecute(Map result) {super.onPostExecute(result);if(result == null){Toast.makeText(LoadDialog.this.getContext(), "網路通訊異常", Toast.LENGTH_LONG).show();return;}callback.getResult(result);}}}

android 請求網路非同步載入

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.