/*** 封装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);}}
}

转载于:https://www.cnblogs.com/gcczhongduan/p/5232054.html

android 请求网络异步载入相关推荐

  1. Android商城开发系列(六)——使用 OkHttpUtils 请求网络 + 使用 fastjson解析数据...

    OkHttp是Google推荐使用的一个开源的网络请求框架,Android开发中涉及到网络请求和接口调用现在大部分都是使用OkHttp,网上已经有不少人针对OkHttp进行了封装,这里推荐一下鸿洋大神 ...

  2. android之网络请求 -- 获取RecyclerView的列表项(图片 + 文字)

    android之网络请求 -- 获取RecyclerView的列表项 示意图,网络请求的地址,插件及依赖 代码架构 代码内容 MainActivity.java activity_main.xml R ...

  3. Android中的OKHttp请求网络

    OKHttp 文章目录 OKHttp 一.简介 二.基本用法 1.依赖 2.使用OKHttp 2.1.get请求 2.2.post请求 3.案例操作演示(借助runOnUiThread()方法进行线程 ...

  4. Android单元测试网络请求问题

    Android通过单元测试网络请求问题 单元测试中想使用okhttp但是发现okhttp回调方法不执行,发现网络请求是异步请求原因,导致断点不能拦截, 解决办法需要调用okhttp的同步请求方式进行网 ...

  5. Android—OkHttp同步异步请求过程源码分析与拦截器

    OkHttp同步请求步骤: 创建OkHttpClient,客户对象 创建Request,请求主体,在请求主体设置请求的url,超时时间等 用newCall(request)将Reuqest对象封装成C ...

  6. Android okHttp网络请求之缓存控制Cache-Control

    前言: 前面的学习基本上已经可以完成开发需求了,但是在项目中有时会遇到对请求做个缓存,当没网络的时候优先加载本地缓存,基于这个需求我们来学习一直okHttp的Cache-Control. okHttp ...

  7. android (java) 网络发送get/post请求参数设置

    最近做了一段时间android网络编程方面的项目,现在总结一下android中网络连接方式, android中网络通信分为socket编程和http编程,这里只介绍htt方面.网络请求方式可分为get ...

  8. 【小王的安卓之路】Android原生网络请求

    Android原生网络请求 一. 网络请求的必要性 二. 网络请求分类 三. 网络请求实现方法 四. 注意事项 一.网络请求的必要性: 如今单机APP早已经接近消失就连最简单的时钟日期等软件都需要去请 ...

  9. 『Android』网络请求数据与JSON解析

    『Android』网络请求数据与JSON解析

最新文章

  1. 2021年4月28日 深圳头条后台开发实习面试(hr面)
  2. Mysql8- Public Key Retrieval is not allowed
  3. 去杠杆高歌猛进,借呗会倒闭吗?
  4. 漫画 | 小白也能看懂的量子物理漫画终于来了!
  5. PAT乙级(1032 挖掘机技术哪家强 )
  6. 如何使用Syncios Data Recovery直接从 iOS 设备恢复数据?
  7. 内存管理 kmalloc
  8. python打印日历_Python怎么打印日历?
  9. 计算机添加桌面小插件,一款实用的Windows小插件 ——桌面日历DesktopCal
  10. python爬取『大年初一』热映电影,以『可视化及词云秀』方式带你了解热映电影...
  11. 新一代三维GIS技术资料集锦
  12. minicom and kermit
  13. 偶得李春芬先生书信一函
  14. python在线办公自动化oa系统django408
  15. JDK17的下载安装与配置(详细教程)
  16. 手机放哪里辐射危害最低
  17. 全球与中国冷凝器扩管器市场深度研究分析报告
  18. 【VSCode报错】 Error while fetching extensions : XHR failed
  19. Zemax中的MTF
  20. vue使用富文本插件vue elemnt-tiptap和vue-quill-editor

热门文章

  1. Nginx的应用之动静分离
  2. python中numpy矩阵运算操作大全(非常全)!
  3. beego——模板处理
  4. 初学者最常问的几个问题
  5. IT基础架构规划方案二(计算机系统与机房规划规划)
  6. java 实现 常见排序算法(四)基数排序
  7. docker镜像导入、导出
  8. 高德地图开发 怎么去除城市信息
  9. mysql开启布隆过滤器_海量数据去重之布隆过滤器
  10. 谭浩强c语言规范化的指数形式,C语言程序设计谭浩强第四期末复习重点.docx