问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android service异步网络加载怎么实现

发布网友 发布时间:2022-10-10 05:50

我来回答

1个回答

热心网友 时间:2024-11-07 17:30

**
* 封装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);
}
}
}
</object,object,map>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁告诉我一下,韩语中,“遵命”怎么说 想开个甜品店,不知道哪里可以学习呢 如何取消微信新号绑定的手机号? 翼支付-翼建钟情活动内容是什么? 怎么参加翼支付“翼建钟情”活动? 翼支付--翼建钟情立减10元-建行这次活动有具体名额限制吗? 西凤酒是哪里的 货车总重量不超过二十吨就不算超载吗? 自卸货车上装有二十多吨货已经有四五天了对货车能伤害哪个部位? 如何回复别人的"忙里偷闲"? Android要实现Service月Fragment之间的通信如何实现? android中service和receiver通信的问题,求指教 人的身心发展指个体从什么在身心两方面 身心发展是什么意思 家门口种什么植物旺财 大门口种什么树能旺财 家门前种什么树比较旺财 门囗栽什么树人旺财旺 门囗栽哪些树人旺财旺 家用小冰柜有无霜的吗 2022年安放财神吉日 分手的人还能做朋友吗? 分手后还能做普通朋友吗? 经常上公共厕所可能染上哪些病? 在外面上公共厕所卫生吗? asp中文名是什么 可塑橡皮怎么用 可塑橡皮的特点 ...林晚晚不肯露脸,当她说被迫露脸后,网友恍然大悟,真实原因是什么? 林晚晚长什么样(林晚晚露脸惨遭嫌弃) 新买的可塑橡皮怎么用 热泵热水器工作原理 对幼升小孩子的希望和寄语 tf白管07专柜多少钱 tf白管07是什么颜色适合黄皮吗 企业营业执照证号 怎么查啊 男生面部美容的步骤 男士美容的方法介绍 男士美容护肤的新方法 夏天到了,每天要洗脸好多次,因为爱出汗,洗脸多了会对皮肤有害吗?_百度... 频繁洗脸对皮肤也不好 tcl冰箱冷藏室温度1-7档是多少度 在职场中,有哪些升职的方法? 职场快速升迁的技巧分别有哪些 要想升职,怎样做才是最有效的? 最原始的超级玛丽哪里有下载? 冰虎冰箱不制冷了怎么? 孕五个月长了18斤正常吗 怀孕第五个月长了10斤属于正常情况吗,一般整个怀孕过程增重多少... 会计适合什么性格的人 你的深刻体验,就是你的人生价值 不登陆微信,只用可以登录王者荣耀吗? 制作横排商品文字效果,选取什么具体工具? 蹦球历险BOUNCE的12-21关在哪下载?