前言:雖然本人比較少用這個AsyncTask,但是因為項目中常常有用到,難免不了要維護,修修補補之類的工作。所以就在這里補一個吧!我熱愛一目了然的代碼,如下:
class DownloadTask extends AsyncTask<Void, Integer, Boolean> {
@Override
protected void onPreExecute() {
progressDialog.show();
}
@Override
protected Boolean doInBackground(Void... params) {
try {
while (true) {
int downloadPercent = doDownload();
publishProgress(downloadPercent);
if (downloadPercent >= 100) {
break;
}
}
} catch (Exception e) {
return false;
}
return true;
}
@Override
protected void onProgressUpdate(Integer... values) {
progressDialog.setMessage("當前下載進度:" + values[0] + "%");
}
@Override
protected void onPostExecute(Boolean result) {
progressDialog.dismiss();
if (result) {
Toast.makeText(context, "下載成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "下載失敗", Toast.LENGTH_SHORT).show();
}
}
}
//使用方法
new DownloadTask().execute();
作者:Ruheng
鏈接:http://www.lxweimin.com/p/817a34a5f200
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
感謝:
Android中的線程狀態(tài)之AsyncTask詳解
AsyncTask 只能執(zhí)行一次
其他閱讀:
基于最新版本的AsyncTask源碼解讀及AsyncTask的黑暗面