Android AsyncTask 源碼解析解析可以參考這篇文章,寫得很透徹。
AsyncTask的缺陷,在3.0以前,最大支持128個線程的併發,10個任務的等待。
在3.0以後,無論有多少任務,都會在其內部單線程執行。通過這個實例的演示,我們可以看到使用execute方法啓動時,下載任務是串行的,即必須等第一個下載完成後才能下載第二個;使用executeOnExecutor啓動時,可以進行並行執行,所有任務可以同步進行。
參照寫了一個例子,用AsyncTask下載一個圖片,並顯示出來,下載過程中顯示百分比。
新手一定要看,一看就會,一看就懂。部分源碼來至於網絡,點擊下載源碼。我在4.0.3中運行成功,其它平臺應該也沒有問題。
最開始調試的時候,換了幾個圖片url地址都會提示:
08-08 12:03:52.389: W/System.err(16662): java.net.UnknownHostException: Unable to resolve host "images.cnitblog.com": No address associated with hostname
後來在網上搜索看了下,是因爲AndroidManifest.xml文件中需要添加如下權限:
<uses-permission android:name="android.permission.INTERNET"/>
避免內存泄露相關:
http://blog.csdn.net/womengmengyan/article/details/52315564