移動(dòng)護(hù)理異步任務(wù)處理
實(shí)例解析
以移動(dòng)護(hù)理中的病人列表異步任務(wù)處理為例:
@Override
protected void onPreExecute() {
super.onPreExecute();
// 獲取Wifi網(wǎng)絡(luò)連接狀態(tài)
isNetWorkConnected = NetWorkActivity
.isNetworkAvailable(PatiListActivity.this);
if (isNetWorkConnected)
// 彈出提示對(duì)話框
mDialog.show();
}
onPreExecute()方法主要用于檢查網(wǎng)絡(luò)連接是否成功,如果成功則彈出進(jìn)度條對(duì)話框。該方法運(yùn)行于UI線程。
@Override
protected Object doInBackground(Object... arg0) {
if (isNetWorkConnected) {
// 獲取病人列表數(shù)據(jù)
patientList = getPatiList();
}
return null;
}
doInBackground()方法主要進(jìn)行網(wǎng)絡(luò)訪問和XML解析,以獲取病人列表數(shù)據(jù),它運(yùn)行于后臺(tái)線程。這里沒有調(diào)用publishProgress() 方法,因?yàn)槲覀兊倪M(jìn)度條不需要顯示百分比,因此我們也沒必要重載doProgressUpdate(Progress…)方法。
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
if (isNetWorkConnected) {
try {
// 加載頁面控件
drawPage();
// 關(guān)閉提示對(duì)話框
mDialog.dismiss();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(PatiListActivity.this, errorMsg,
Toast.LENGTH_SHORT).show();
}
}
}
OnPostExecute()運(yùn)行于UI線程,通過doInBackgroud()方法獲取的病人列表來加載頁面控件,完成后關(guān)閉對(duì)話框。至此,異步任務(wù)處理整個(gè)過程結(jié)束。
【編輯推薦】
移動(dòng)醫(yī)療系統(tǒng)解析
移動(dòng)醫(yī)療應(yīng)用熱席卷肯尼亞
【獨(dú)家】2012年5大移動(dòng)醫(yī)療趨勢(shì)