asysctask定義了三種泛型型別params,progress和result.
1, params啟動任務執行的輸入引數,比如http請求的url
2, progress後台任務執行的百分比
3, result後台執行任務最終返回的結果,比如string,比如我需要得到的list
asynctask方法:
必選方法:
1, doinbackground(params…) 後台執行,比較耗時的操作都可以放在這裡。
注意這裡不能直接操作ui。此方法在後台執行緒執行,完成任務的主要工作
,通常需要較長的時間。在執行過程中可以呼叫
public progress(progress…)來更新任務的進度。
2, onpostexecute(result)相當於handler處理ui的方式,在這裡可以使用在
doinbackground得到的結果處理操作ui。此方法在主線程執行,任務執行的結果作為此方法的引數返回。
可選方法:
1, onprogressupdate(progress…) 可以使用進度條增加使用者體驗度。此方法在主線程執行,使用者顯示任務執行的進度。
2, onpreexecute() 這裡是最新使用者呼叫excute時的介面,當任務執行之前開始呼叫此方法,可以在這裡顯示進度對話方塊。
3, oncancelled() 使用者呼叫取消時,要做的操作
asynctask三個狀態:pending,running,finished
使用asynctask類,遵守的準則:
1, task的例項必須在ui thread中建立;
2, execute方法必須在ui thread中呼叫
3, 不要手動的呼叫onpfreexecute(),onpostexecute(result)
doinbackground(params…),onprogressupdate(progress…)這幾個方法;
4, 該task只能被執行一次,否則多次呼叫時將會出現異常;
asynctask的整個呼叫過程都是從execute方法開始的,一旦在主線程中呼叫execute方法,就可以通過onpreexecute方法,這是乙個預處理方法,比如可以在這裡開始乙個進度框,同樣也可以通過onprogressupdate方法給使用者乙個進度條的顯示,增加使用者體驗;最後通過onpostexecute方法,相當於handler處理ui的方式,在這裡可以使用在
doinbackground得到的結果處理操作ui。此方法在主線程執行,任務執行的結果作為此方法的引數返回。
AsyncTask簡介與使用
一 簡介 1 三個object型別的泛型引數。a 第乙個引數params是非同步任務開始的時候你要傳遞進去的引數,可以叫他啟動引數。b 第二個引數progress是任務執行過程中的進度情況。c 第三個引數result是非同步任務完成時交給主線程的返回結果 2 四個方法 onpreexecute do...
Android中的Timer和Handler的使用
timer timer主要用於執行一次性任務或者按照某個時間間隔迴圈執行某個任務,但對於迴圈執行來說,又分為兩種情況。第一種是fixed period execution,呼叫schedule timertask,delay,period 方法即可,這種迴圈執行任務的特點是,下一次執行的開始時間是從...
Handler訊息機制完全解析Handler解析
handler handler總是依附於建立時所在的執行緒,比如我們的handler是在主線程中建立的,而在子執行緒中又無法直接對ui進行操作,於是我們就通過一系列的傳送訊息 入隊 出隊等環節,最後呼叫到了handler的handlemessage 方法中,這時的handlemessage 方法已經...