public class DownloadTask extends AsyncTask<Void,Integer,Boolean> {
private static final String TAG = "Magic";
private Context mContext;
private ProgressDialog progressDialog ;
public DownloadTask(Context context){
mContext = context;
progressDialog = new ProgressDialog(mContext);
}
@Override
protected void onPreExecute() {//执行前要做的事情
progressDialog.setTitle("下载中");
progressDialog.setMessage("请等待...");
progressDialog.setCancelable(true);//true表示可以通过back键取消掉
progressDialog.show();
}
@Override
protected Boolean doInBackground(Void... voids) {//后台做的事情,返回的是执行结果
try{
while(true){
Thread.sleep(50);
int downPercent = getPercent();
publishProgress(downPercent);//更新UI,会自动调用onProgressUpdate()
if(downPercent > 100){
break;
}
}
}catch (Exception e){
Log.e(TAG, "doInBackground: "+e);
return false;//返回处理结果
}
return true;//返回处理结果
}
@Override
protected void onProgressUpdate(Integer... values) {//更新UI
progressDialog.setMessage("下载进度"+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();
}
}
private int percent;
public int getPercent() {
percent++;
return percent;
}
}
调用
new DownloadTask(MainActivity.this).execute();
Android 异步任务 AsyncTask的使用
最新推荐文章于 2024-08-31 09:10:32 发布