Android AsyncTask内部机制总结

1. AsyncTask内部还是用Handler(私有静态内部类的形式)实现通信,通过线程池管理执行后台任务(FutureTask会执行WorkerRunnable),WorkRunnable相当于后台线程任务,会拿来实例化线程对象,此线程一旦执行(其call()方法的执行,实际由FutureTask控制)会回调doInBackground()方法并把方法返回值作为消息Message的对象发送给Handler。FutureTask中封装了WorkRunnable,负责执行WorkRunnable任务(FutureTask中的done()方法会回调WorkRunnable中的call()方法);


2. Executor执行者负责把FutureTask封装成Runnable队列(会在其run()方法中调用FutureTask的done()方法)并依次取出递给线程池,而线程池ThreadPoolExecutor则负责用它来创建线程对象Thread进行执行(执行Runnable的run()方法);


3. 执行者负责维护任务队列,先进先取出,但线程池每次只执行一个任务,相当于单线程;


4. 在Handler的消息处理方法handleMessage()中,会根据条件判断是回调进度方法onProgressUpdate(),还是回调完成方法(包括任务执行完成的onPostExecute()方法或者取消任务的方法onCancel());


5. 一个任务只能执行一次,如果在执行时或者执行结束后再次调用execute()方法会抛异常;


6. AsyncTask的缺陷,在3.0以前,最大支持128个线程的并发,10个任务的等待。在3.0以后,无论有多少任务,都会在其内部单线程执行;
listen1 是一款优秀的音乐播放软件,在一些音乐平台上可以直接搜索并在线播放音乐。但有时候,我们可能需要将喜欢的音乐保存到本地,以便在没有网络连接的情况下也能欣赏音乐。这时,listen1 的 zip 文件就能派上用场了。 listen1 的 zip 文件实际上是一种压缩文件格式,其中包含了 listen1 软件的安装文件和必要的资源文件。我们可以通过下载 listen1 的 zip 文件,将其解压到计算机的指定目录中,然后运行解压后的文件来安装 listen1 软件。一旦成功安装,我们就能通过 listen1 来搜索、播放和保存喜欢的音乐。 使用 listen1 的 zip 文件安装软件的好处是,它能够以较小的文件体积将软件和资源文件打包起来,方便用户下载和传输。而且,zip 文件的解压步骤也相对简单,对于不具备技术背景的用户来说也能够轻松完成安装过程。 在使用 listen1 的过程中,我们可以将喜欢的音乐保存到本地,形成一个音乐库。这样,即使在没有网络连接的情况下,我们也能够通过 listen1 来随时欣赏自己喜欢的音乐。同时,listen1 还支持将保存的音乐导出为本地文件,以便在其他设备上进行播放和分享。 总之,listen1 的 zip 文件提供了一种方便快捷的安装方式,让用户能够轻松地使用 listen1 软件来搜索、播放和保存喜欢的音乐。无论是在有或没有网络连接的情况下,listen1 都能为用户提供优质的音乐体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值