AsyncTask简介

认识AsyncTask
Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理。

Android之所以有handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。Android为了降低这个开发难度,提供了AsyncTask。AsyncTask就是一个封装过后的后台任务类,顾名思义就是异步任务。AsyncTask。要使用AsyncTask工作我们要提供三个泛型参数,并重载几个方法(至少重载一个)。

AsyncTask定义了三种泛型类型 Params,Progress和Result。

  • Params启动任务执行的输入参数,比如HTTP请求的URL。
  • Progress后台任务执行的百分比
  • Result后台执行任务最终返回的结果,比如String。

必须重写两个方法

  • diInBackground(Params…)后台执行,比较耗时的操作都可以放在这里。
  • onPostExecute(Result)相当于Handler处理UI的方式,在这里面可以使用在doInBackground得到的结果处理操作UI。此方法在主线程执行,任务执行的结果作为此方法的参数返回。

AsyncTask使用有一些限制,需要注意:

  • AsyncTask类必须在UI线程中加载。在Android4.1之后由系统自动完成。
  • AsyncTask实例必须在UI线程中创建。
  • execute(Params…)方法必须在UI线程中调用。
  • 不要手动调用提供的四个回调方法。
  • 每个AsyncTask实例只能执行一次。

AsyncTask的优缺点
优点

  • 方便实现异步通信
  • 节省资源
    缺陷
  • 在3.0以前,最大支持128个线程的并发,10个任务的等待。在3.0以后,无论有多少任务,都会在其内部单线程执行。
    解决
    由一个控线程来处理AsyncTask的调用判断线程池是否满了,如果满了则线程睡眠否则请求AsyncTask继续处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值