AsyncTask與Handler的相同點跟區別

2021-06-17 15:29:29 字數 1252 閱讀 7014

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 方法已經...