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请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- android 请求网络 和 httpclient的使用上传下载
访问网络最主要的也就是 http协议了. http协议很简单,但是很重要. 直接上代码了,里面都是1个代码块 代码块的,用哪一部分直接拷出去用就好了. 1.访问网络用 get 和 post 自己组拼 ...
- Android利用Volley异步载入数据完整具体演示样例(二)
MainActivity例如以下: package cc.y; import android.app.Activity; import android.content.Context; import ...
- Android请求网络权限
1,新建一个项目,在AndroidManiifest中添加 <uses-permission android:name="android.permission.INTERNET&quo ...
- Android 使用图片异步载入框架Universal Image Loader的问题
使用的Jar包 问题: optionsm = new DisplayImageOptions.Builder() .displayer(new RoundedBitmap ...
- Android中的异步网络请求
本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关姿势.由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家:) 1. 同步网络 ...
- Android okHttp网络请求之Get/Post请求
前言: 之前项目中一直使用的Xutils开源框架,从xutils 2.1.5版本使用到最近的xutils 3.0,使用起来也是蛮方便的,只不过最近想着完善一下app中使用的开源框架,由于Xutils里 ...
- Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
前言: 通过上面的学习,我们不难发现单纯使用okHttp来作为网络库还是多多少少有那么一点点不太方便,而且还需自己来管理接口,对于接口的使用的是哪种请求方式也不能一目了然,出于这个目的接下来学习一下R ...
- 基于Retrofit+RxJava的Android分层网络请求框架
目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及 ...
随机推荐
- Linux shell脚本中 数组的声明:
数组的声明: 1)array[key]=value # array[0]=one,array[1]=two 复制代码 2)declare -a array # array被当作数组名 复制代码 3)a ...
- FPGA编程技巧系列之输入输出偏移约束详解
1. 偏移约束的作用 偏移约束(Offset Constraint)用来定义一个外部时钟引脚(Pad)和数据输入输出引脚之间的时序关系,这种时序关系也被称为器件上的Pad-to-Setup或Clo ...
- Vue指令4:v-on
监听事件 事件:click\keydown <button v-on:click="greet"></button> 可以简写为 <button @ ...
- Vue简易博客总结
项目结构: 首先,编写博客的导航栏组件BlogHeader.vue: <template> <nav> <ul> <li> <router-lin ...
- Ansible基于playbook批量修改主机名实战
Ansible基于playbook批量修改主机名 安装Ansible,相信这里也不用多说,大家都知道 说一下环境:这里的主机名是修改之后的,我先把其他两台的主机名改为别的 192.168.30.21 ...
- 网络编程 - socket接收大数据
通过socket,实现客户端发送命令,将服务端执行出的结果,反回到客户端,主要4个步骤:1.服务端返回数据: 2.服务端返回数据的大小: 3.客户端接收返回数据的大小: 4.客户端按返回数据大小接收数 ...
- 洛谷—— P1450 [HAOI2008]硬币购物
P1450 [HAOI2008]硬币购物 硬币购物一共有$4$种硬币.面值分别为$c1,c2,c3,c4$.某人去商店买东西,去了$tot$次.每次带$di$枚$ci$硬币,买$si$的价值的东西.请 ...
- RQNOJ #204 特种部队 sol
link 首先我们可以注意到一个非常无聊的性质.先一直向右边走,然后折返回来向左边走,本质上与先向右走,然后向左走,再向右走这样循环走完整个路程是一致的. 根据这个性质,我们可以将向左走与向右走两个东 ...
- geth搭建以太坊私链及常用操作
一.下载安装geth客户端 https://www.ethereum.org/ 二.搭建私有链 1.准备创世区块配置文件 要运行私有链,我们就需要定义自己的创世区块,创世区块信息写在一个json格式的 ...
- VS C#报错CS1056意外的字符"(Unexpected Character")
今天重装了下VS2017,再打开之前的项目发现运行不了了,报错如图 解决方法: 找到.NETFramework,Version=v4.5.2.AssemblyAttributes.cs这个文件删除就好 ...