AsyncTask,是android提供的輕量級(jí)的異步類(lèi),可以直接繼承AsyncTask,在類(lèi)中實(shí)現(xiàn)異步操作,提供接口反饋當(dāng)前異步執(zhí)行的程度(可以通過(guò)接口實(shí)現(xiàn)UI進(jìn)度更新),最后反饋執(zhí)行的結(jié)果給UI主線程.

本文不分析AsyncTask的使用,它的使用教程網(wǎng)上一搜一大堆,本文主要分析它的內(nèi)部邏輯和實(shí)現(xiàn),它是怎么實(shí)現(xiàn)異步的,它是怎么處理多個(gè)任務(wù)的,是并發(fā)么??

一、線程任務(wù)的調(diào)度

在AsyncTask內(nèi)部會(huì)創(chuàng)建一個(gè)類(lèi)相關(guān)的線程池來(lái)管理要運(yùn)行的任務(wù),也就就是說(shuō)當(dāng)你調(diào)用了AsyncTask的execute()后,AsyncTask會(huì)把任務(wù)交給線程池,由線程池來(lái)管理創(chuàng)建Thread和運(yùn)行Therad。

在Android4.0版本中它內(nèi)部是有兩個(gè)線程池:SerialExecutor和ThreadPoolExecutor,SerialExecutor是串行的,ThreadPoolExecutor是并發(fā)的,而默認(rèn)的就是SerialExecutor的,所以你一個(gè)程序中如果用了好幾個(gè)AsyncTask你就得注意了:不要忘了換成并發(fā)的線程池執(zhí)行。下面演示一下,穿行的調(diào)度

1.一個(gè)簡(jiǎn)單的例子:可以看出他是一個(gè)個(gè)執(zhí)行的

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

 

代碼如下:

    1. 延伸閱讀

      學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式

      我想了解如何學(xué)習(xí)

      姓名:
      手機(jī):
      留言:
       
      <bdo id="8i5wn"></bdo>

        <bdo id="8i5wn"></bdo>