首先在活动中需要启动任务
new DownloadTask(this).execute(); 简单的比较完整的操作代码如下:
public class DownloadTask extends AsyncTask<Void, Integer, Boolean> { ProgressDialog progressDialog; Context mcontext; public DownloadTask(Context mcontext) { this.mcontext = mcontext; progressDialog = new ProgressDialog(mcontext); } //显示进度对话框,这个方法在任务开始前调用。用于界面初始化操作 @Override protected void onPreExecute() { progressDialog.show(); } //方法中所有代码是在子线程中使用的,在这边可以处理所有好事操作,任务完成后利用return进行任务结果返回, //注意如果第三个方法使用到的是void。就可以不用返回结果,并且特别注意,在此方法中不能进行UI操作,如果必须要 //更新UI数据,可以用publishprogress(progress)方法实现 @Override protected Boolean doInBackground(Void... params) { while (true) { //一个虚构的方法 int downloadpercent = dodownload(); publishProgress(downloadpercent); if (downloadpercent >= 10) { break; } } return true; } private int dodownload() { return 0; } //当互殴太任务执行完毕后会返回一个数据,紧接着就开始利用到这个方法进行操作 @Override protected void onProgressUpdate(Integer... values) { //更新下载进度 progressDialog.setMessage("download" + values[0] + "%"); } @Override protected void onPostExecute(Boolean result) { progressDialog.dismiss(); //显示下载结果 if (result) { Toast.makeText(mcontext, "下载成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mcontext, "下载失败", Toast.LENGTH_SHORT).show(); } } }