AsyncTask的版本差異及其與Thread的使用場景
來源:程序員人生 發布時間:2014-11-13 08:50:55 閱讀次數:3453次
/**
* AsyncTask相干總結
*
* 1 異步任務AsyncTask在不同Android版本的差異.
* 該差異主要是Android2.3和Android3.0及其以后的差異
*
* 差異內容:
* 在Android2.3中AsyncTask的調用可以并發履行.
* 由于它在1個線程池中被調用.該線程池有5個核心線程,且最大線程數為128個.
* 比如:同時啟動10個任務,有5個任務能夠立刻履行,另外5個任務則需等待;當有1個任務履行終了后,第6個任務才會啟動,以此類推.
* 由于線程池中最大能寄存的線程數是128個,當我們嘗試去添加第129個任務時,程序會崩潰.
*
* 在Android3.0及其以后AsyncTask的調用在默許情況同時只能有1個任務在履行.
* 在AsyncTask中采取了SerialExecutor,它很類似于SingleThreadExecutor,即線程池中只有1個線程的線程池.
* 所以在2.3以后調用asyncTask.execute(params)方法,同時只能有1個任務在履行.待該任務履行完成后再履行下1個任務.
* 那末可以修改該默許設置么?固然是可以的.
* 可以調用方法asyncTask.executeOnExecutor(executor, params);
* 第1個參數executor就設置為1個自己配置的線城池
*
* 2 AsyncTask和Thread的使用處景的區分
* AsyncTask簡單靈活,不用斟酌UI更新.但是要注意AsyncTask版本差異帶來的問題,請參考上面的總結.
* 當有大量的瞬時任務出現時應當斟酌使用線程池,可以節省線程的創建和燒毀的消耗
*
*
*
* 參考資料
* 1 Nate的教程
* 2 http://androidxref.com/4.0.4/xref/
* 3 http://blog.csdn.net/guolin_blog/article/details/11711405
* 4 http://blog.csdn.net/chenzujie/article/details/9247243
* Thank you very much
*
*/
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈