前言:雖然本人比較少用這個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.reibang.com/p/817a34a5f200
來源:簡書
著作權歸作者所有豫领。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處舔琅。
感謝:
Android中的線程狀態(tài)之AsyncTask詳解
AsyncTask 只能執(zhí)行一次
其他閱讀:
基于最新版本的AsyncTask源碼解讀及AsyncTask的黑暗面