當一個線程執行的時候,可能會產生一些阻礙,這時用戶就不能再執行當前線程的其他操作,可能需要等待其響應。於是,解決的辦法就是把可能產生阻礙的步驟放在另一個線程上執行,這樣當前線程的操作就可以不受影響。
例子:在某個軟件中,點擊某個按鈕會向服務器發送請求,這時在網絡傳輸中可能產生很多事件阻礙,所以就要把該操作放在另一個線程中,即異步操作。
代碼:需要寫一個類繼承AsyncTask<Void,Void,Void>,再覆寫Void doInBackground方法,在該函數中寫要執行的可能產生阻礙的操作。執行該線程在主線程中使用該類的一個對象的excute方法。
onPreExecute 該方法運行在UI線程中,可以對一些UI控件進行操作
doInBackground 該方法並不運行在UI線程中,所以不能對UI控件進行修改
在該方法內可以調用publishProgress(i)發佈一些更新到UI線程。
onProgressUpdate (i)該方法在UI線程中,可實現更新(如修改進度條),publishProgress的參數就是傳到這裏。
onPostExecute 該方法在doInBackground 運行之後運行
AsyncTask<A,B,C>
C doInBackground (A...Param) A是參數類型,...的意思是可以傳入多個A類型的數,Param是一個數組,保存參數。C是返回值類型
onProgressUpdate(B)