异步任务AsyncTask

有时我们要做一些耗时的任务时,往往不会在UI主线程里面去做这些事情,而是在另外的线程里去执行。我个人觉得用异步任务AsyncTask可以非常简单地实现这一操作。它有两个特别明显的好处:1、不会阻塞主线程;2、可以修改主线程界面组件。
AsyncTask< Params,Progress,Result>是抽象类,它的三个泛型参数的含义是:
Params:启动任务执行的输入参数类型
Progress:后台任务完成情况的反馈值的类型
Result:后台执行完成返回的值的类型
使用AsynTask需要执行如下几步:
1、创建AsynTask的子类,并为三个泛型指定类型,如果某个参数不需要指定类型,可指定为Void(V大写)。
2、重写各种方法:
doInBackground(Params…):这个方法最重要,在里面实现你需要在后台执行的任务,例如在这里实现复制文件、下载图片等等任务。在该方法中还可以主动调用publishProgress(Progress…values)方法去反馈更新任务的完成状况。
onProgressUpdate(Progress…values):在调用了publishProgress(Progress…values)后,会触动系统调用此方法。
onPreExecute():该方法将在执行耗时后台任务之前被调用,通常用来完成一些初始化的准备工作。
onPostExecute(Result result):当DoInBackground()完成后,系统调用该方法,并把DoInBackground()方法的返回值给它。
3、调用AsyncTask子类实例的execute(Params…params)方法开始执行耗时任务。
下面贴一个异步任务下载的例子(《疯狂Android讲义》上面的例子):

public class AsyncTaskTest extends Activity{
    private TextView show;
    @Override
    public void oncreate(Bundle savedInstanceState){
        super.onCrate(savedInstanceState);
        setContentView(R.layout.main);
        show = (TextView)findViewById(R.id.show);
    }
    //一个触发下载任务的按钮的点击事件
    public void download(View source) throws Exception{
    DownTask task=new DownTask(this);
    task.execute(new URL("..."));//这里就是在开始执行耗时任务了
    }
    //定义一个AsyncTask的实现类
    class DownTask extends AsyncTask<URL,Integer,String>{
    大概就是在onPreExecute里面实现了一个之前声明的进度展示框,在doInBackground里去实时调用publishProgress方法,在onProgressUpdate方法里面去实时更新进度框的进度条
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值