Android Asynchronization

整個過程有點複雜,認真理解下,還是覺得設計得挺好的。


異步操作 AsyncTask


對於耗時較多的操作(如網絡操作等)因爲會消耗時間而使程序阻塞,那麼應該採用異步線程才進行。


實現一個繼承AsyncTask 異步操作的類。覆蓋doInBackground方法
採取不直接調用所要進行的操作,而是在doInbackground中實現。
實例化一個AsyncTask的繼承類,然後調用其execute()方法即可。那麼耗時操作就在新的線程中執行了,如果遭遇阻塞將不會影響到UI線程。


AsyncTask:
execute()
onPreExecute():在UI線程中執行,進行異步線程執行之前的UI準備工作
onPostExecute():在UI線程中執行,那麼可以控制UI控件
doInBackground():無法控制UI,因爲它是在另外一個線程中執行的,在這個方法裏我們執行耗時操作,並通過調用publicProgress()進而調用onProgressUpdate()方法,從而更新UI。
onProgressUpdate():在異步任務執行過程中對UI進行修改


生成AsyncTask對象之後,執行execute(),首先執行的是onPreExecute(),然後是doInBackground(),中間會調用onProgressUpdate(),最後是onPostExecute()。其中,doInBackground()是在一個新的進程中執行的。


在doInBackground()調用publishProgress()將會調用onProgressUpdate(),從而更新UI。從這點看,publishProgress的作用是進程間通信。


doInBackground()的參數是來自調用execute()得到的參數,也是AsyncTask三個參數中的第一個。


doInBackground()的返回值由AsyncTask的第三個參數決定,這個返回值會作爲onPostExecute()的參數。


onProgressUpdate()的參數來自publishProgress()的參數,由第二個類型參數定義

發佈了58 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章