- 2011-12-22 09:31
- 作者:李建飞
- 来源:中联专家网
实例解析
以移动护理中的病人列表异步任务处理为例:
@Override
protected void onPreExecute() {
super.onPreExecute();
// 获取Wifi网络连接状态
isNetWorkConnected = NetWorkActivity
.isNetworkAvailable(PatiListActivity.this);
if (isNetWorkConnected)
// 弹出提示对话框
mDialog.show();
}
onPreExecute()方法主要用于检查网络连接是否成功,如果成功则弹出进度条对话框。该方法运行于UI线程。
@Override
protected Object doInBackground(Object... arg0) {
if (isNetWorkConnected) {
// 获取病人列表数据
patientList = getPatiList();
}
return null;
}
doInBackground()方法主要进行网络访问和XML解析,以获取病人列表数据,它运行于后台线程。这里没有调用publishProgress() 方法,因为我们的进度条不需要显示百分比,因此我们也没必要重载doProgressUpdate(Progress…)方法。
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
if (isNetWorkConnected) {
try {
// 加载页面控件
drawPage();
// 关闭提示对话框
mDialog.dismiss();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(PatiListActivity.this, errorMsg,
Toast.LENGTH_SHORT).show();
}
}
}
OnPostExecute()运行于UI线程,通过doInBackgroud()方法获取的病人列表来加载页面控件,完成后关闭对话框。至此,异步任务处理整个过程结束。
【编辑推荐】
共2页: 上一页 [1]2 [查看全文] |