android 请求网络异步载入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 请求网络异步载入相关的知识,希望对你有一定的参考价值。
/** * 封装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; } @Override protected 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; } @Override protected void onPostExecute(Map result) { super.onPostExecute(result); if(result == null){ Toast.makeText(LoadDialog.this.getContext(), "网络通信异常", Toast.LENGTH_LONG).show(); return; } callback.getResult(result); } } }
以上是关于android 请求网络异步载入的主要内容,如果未能解决你的问题,请参考以下文章
Android异步载入学习笔记之四:利用缓存优化网络载入图片及ListView载入优化
Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入