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

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

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

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

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

1.一個簡單的例子:可以看出他是一個個執(zhí)行的
 
代碼如下:
<strike id="geaye"><table id="geaye"></table></strike>
    <cite id="geaye"><option id="geaye"><em id="geaye"></em></option></cite>

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

    姓名:
    手機:
    留言:
     
      <b id="geaye"></b>
      1. <ul id="geaye"><meter id="geaye"><sup id="geaye"></sup></meter></ul>