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

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

一、線程任務的調度

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

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

1.一個簡單的例子:可以看出他是一個個執(zhí)行的
 
代碼如下:
<tbody id="4zydm"></tbody>
<pre id="4zydm"><dfn id="4zydm"></dfn></pre>

    我想了解如何學習

    姓名:
    手機:
    留言:
     
    <label id="4zydm"><xmp id="4zydm"><li id="4zydm"></li>