AnsyncTask异步任务

@(java&android)[android]

说明

AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用。
AsyncTask是个抽象类,使用时需要继承这个类,然后调用 execute() 方法。注意继承时需要设定三个泛型Params,Progress和Result的类型,如AsyncTask

例子

进度条
继承 AsyncTask
ScanProgressBar.java

package com.clj.blesample;

import android.os.AsyncTask;
import android.widget.ProgressBar;

/**
 * Created by lcd on 9/7/16.
 */
public class ScanProgressBar extends AsyncTask<Integer,Integer,String>
{
        private ProgressBar pgbar;
        public ScanProgressBar(ProgressBar pgbar) {
            super();
            this.pgbar = pgbar;
        }

    // 模拟耗时任务
        class DelayOperator {
            public void delay()
            {
                try {
                    Thread.sleep(100);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        }

        //该方法不运行在UI线程中,主要用于异步操作,通过调用publishProgress()方法
        //触发onProgressUpdate对UI进行操作
        /// 此处的参数类型对应继承是参数的设置
        @Override
        protected String doInBackground(Integer... params) {
            DelayOperator dop = new DelayOperator();
            int i;
            for (i = 0;i < 100; i += (100*100)/params[0].intValue()) {
                dop.delay();
                publishProgress(i);
            }
            return  i + params[0].intValue() + "";
        }

        @Override
        protected void onPreExecute() {
        }

        //在doBackground方法中,每次调用publishProgress方法都会触发该方法
        //运行在UI线程中,可对UI控件进行操作
        @Override
        protected void onProgressUpdate(Integer... values) {
            int value = values[0];
            pgbar.setProgress(value);
        }
}

在 UI 线程中调用

log TIME_OUT = 5000;

ProgressBar pgbar = (ProgressBar)findViewById(R.id.pgbar);
                pgbar.setProgress(0);
                int runTime = (int) TIME_OUT;
                ScanProgressBar myTask = new ScanProgressBar(pgbar);
                myTask.execute(runTime);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值