Android加载对话框同时异步执行实现方法
时间:2021-02-15 10:23:30|栏目:Android代码|点击: 次
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;
}
};