前言:虽然本人比较少用这个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.jianshu.com/p/817a34a5f200
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
感谢:
Android中的线程状态之AsyncTask详解
AsyncTask 只能执行一次
其他阅读:
基于最新版本的AsyncTask源码解读及AsyncTask的黑暗面
网友评论