實例解析
以移動護理中的病人列表異步任務處理為例:
@Override
protected void onPreExecute() {
super.onPreExecute();
// 獲取Wifi網絡連接狀態(tài)
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()方法獲取的病人列表來加載頁面控件,完成后關閉對話框。至此,異步任務處理整個過程結束。
【編輯推薦】
移動醫(yī)療系統(tǒng)解析
移動醫(yī)療應用熱席卷肯尼亞
【獨家】2012年5大移動醫(yī)療趨勢