Android加载对话框同时异步执行实现方法
程序员文章站
2023-12-15 11:48:16
android中通过子线程连接网络获取资料,同时显示加载进度对话框给用户的操作,需要thread和handler来完成,在thread中执行比较耗时的代码,完成后再通过ha...
android中通过子线程连接网络获取资料,同时显示加载进度对话框给用户的操作,需要thread和handler来完成,在thread中执行比较耗时的代码,完成后再通过handler发送消息给主线程,由主线程刷新ui。
在实现上比较的烦琐,为简化此方法,花了点时间封装了thread和handler,现在通过简单的代码就可以实现相同的功能,而把更多精力放到业务逻辑处理上!
效果如图:
loadingdialog loadingdialog = new loadingdialog(getactivitygroup(), loadingdialogexecute);
// loadingdialog.setisshowdialog(false);
loadingdialog.start();
loadingdialogexecute loadingdialogexecute = new loadingdialogexecute() {
@override
public void executesuccess() {
// 更新ui操作,如填充listview
listadapter = new listadapter(msglistactivity.this, wikis);
listview.setadapter(listadapter);
}
@override
public void executefailure() {
// 异步执行失败或出错时的处理
// ……
}
@override
public boolean execute() {
// 在这里执行耗时的操作,如连接网络拉取数据
try {
// ……
} catch (exception e) {
e.printstacktrace();
seterrorinfo("出现错误\n" + e.getmessage());
return false;
}
return true;
}
};
在实现上比较的烦琐,为简化此方法,花了点时间封装了thread和handler,现在通过简单的代码就可以实现相同的功能,而把更多精力放到业务逻辑处理上!
效果如图:
复制代码 代码如下:
loadingdialog loadingdialog = new loadingdialog(getactivitygroup(), loadingdialogexecute);
// loadingdialog.setisshowdialog(false);
loadingdialog.start();
loadingdialogexecute loadingdialogexecute = new loadingdialogexecute() {
@override
public void executesuccess() {
// 更新ui操作,如填充listview
listadapter = new listadapter(msglistactivity.this, wikis);
listview.setadapter(listadapter);
}
@override
public void executefailure() {
// 异步执行失败或出错时的处理
// ……
}
@override
public boolean execute() {
// 在这里执行耗时的操作,如连接网络拉取数据
try {
// ……
} catch (exception e) {
e.printstacktrace();
seterrorinfo("出现错误\n" + e.getmessage());
return false;
}
return true;
}
};