AsyncTask 异步任务

AsyncTask 封装了新建子线程用于做耗时操作,并提供了子线程与UI线程的信息互动的方法;
使用方法:

  • 创建一个类MyAsyncTask 继承于AsyncTask,并重写四个重要的方法;
//AsyncTask<Params,Progress,Result>是带泛型的类,Param为要传入AsyncTask的参数类型,Progress为任务执行的进度类型,Result是任务需要返回的结果类型,下面案列中,将传入string类型的参数,进度用integer类型值,返回一个Bitmap的类型;
public  class DownloadAsyncTask extends AsyncTask<String, Integer, Bitmap> {

        @Override
        //在UI主线程中调用,主要是用于子线程开始前的准备工作,如UI的准备等     
        protected void onPreExecute() {
            progressBar.setVisibility(View.VISIBLE);

        }


        @Override
        //在UI主线程中调用,主要是用于子线程完成任务后的对返回结果的处理逻辑,及UI的变化等  
        protected void onPostExecute(Bitmap bitmap) {
            progressBar.setVisibility(View.GONE);
            imageView.setImageBitmap(bitmap);
        }



        @Override
        //在子线程中完成的任务逻辑,String...params为传入的可变长的String类型的数组
        protected Bitmap doInBackground(String... params) {
             String st0 =params[0]//传入的第一个String参数
             for(int i= 0 ;i<10;i++){
               publishProgress(i);//可以传入多个指定进度类型的参数
             }
            ...业务逻辑...

                     return bitmap;
        }

        @Override
        //在UI主线程中调用,用于记录子线程完成任务的进度(在doInBackground()方法中调用    publicProgress(object...objects)方法才能触发此方法的调用),当进度值发生变化时,系统会自动在主线程中调用该方法

        @Override
        protected void onProgressUpdate(Integer... values) {
        int i = values[0];//第一个进度值参数

        }
/**
 * 这四个方法的调取顺序和位置:(这些方法是系统自动调用的,不需要我们手动调用)
 *  onPreExecute()(UI主线程中)——> doInBackground()(子线程中)——> onPostExecut()(UI主线程中)
 *                                     |
 *                               publicProgress()(doInBackground()方法中)
 *                                     |
 *                               onProgressUpdate()(UI主线程中)
**/
  • 在Activity中的方法中调用AsyncTask:
MySyncTask task = new MySyncTask();
task.execute(string1)//可传入多个参数,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值