AsyncTask 學習翻譯並總結

2021-05-24 15:16:25 字數 1854 閱讀 7260

最近閒來無事,遂看了一下android文件

其中asynctask類以前未用過,這裡學習並記錄一下:

asynctask ,見名知意,就是非同步任務的意思。android為什麼要提供這個類呢?自然有他的妙處和巧處。

我們知道,在android中非ui執行緒是無法對ui進行操作的,而比較耗時的任務,我們一般考慮到ui卡死,不會直接放在ui執行緒中來完成,而是

另開闢乙個執行緒來完成這個耗時的任務。這樣,在另乙個執行緒中當任務完成時,需要將任務的執行結果。反饋到ui怎麼辦呢?

對,除了可以使用activity的runonuitread(runnable)方法,還有乙個同樣方便的類,就是asynctask。下面是我對sdk文件的翻譯了,自己的話。總感覺彆扭。呵呵。

一、簡介:

asynctask 類允許你方便正確地使用ui執行緒。該類可以將耗時的操作放在後台來處理,而不需要人為地另開執行緒或者使用handlers來完成。

當需要開闢乙個後台執行緒並且其執行結果需要反映到ui執行緒的時候,asynctask就派上用場了。定義乙個asynctack時,需要指定3種型別(params,progress,result),完成4個步驟(begin,doinbackground,processprogress,end)。

二、使用方法:

由於asynctask是個抽象類,所以,你需要定義乙個類來繼承它。同時,這個子類至少需要實現doinbackground(params...)這個方法。

同時,在多數情況下,您可能還需重寫另乙個方法:onpostexecute(result)。

下面是文件中的例項:

一旦定義類asynctask的子類,您就可以直接使用 new downloadfilestask().execute(url1,url2,url3)來執行乙個任務;

三、asynctask的三種范型:

1、params:任務執行時需要的引數型別,(就是execute方法傳入的型別)。

2、progress:後台計算中使用的進度單位資料型別

3、result:任務執行結果的型別

注意:並不是所有的型別都需要,如果某個型別不需要,用void,如:

private class mytask extends asynctask

四、asynctask的四個階段(步驟)

當乙個任務被執行的時候,他就需要經過下面四個階段。

1、onpreexecute();這個方法,在呼叫execute()後,立即在ui執行緒中被執行,該方法通常用於對任務做一些基本的設定,比如在使用者介面上顯示乙個進度條。

2、doinbackground(params...);這個方法,在onpreexecute()執行完成後,在後台執行。這個方法中就是完成耗時操作。非同步任務的params引數傳入該方法,同時,方法的執行結果需要返回,同時需要傳入下乙個階段的方法。在這個方法中還可以使用publishprogress(progress...)改變當前的進度值。這些值將會在onprogressupdate(progress...)方法中同步顯示在ui執行緒。

3、onprogressupdate(progress...);這個方法是在publishprogress(progress...)方法被呼叫之後,在ui執行緒中執行的。以便後台任務在執行的時候,在使用者介面可以顯示各種進度資訊。例如:可以用進度條模擬進度或者在文字域中顯示進度日誌。

4、onpostexecute(result); 該方法在後台任務完成後由ui執行緒呼叫,後台任務的執行結果作為引數傳入該方法。

五、正確使用該類需要注意的幾點:

1、這個類的例項需要在ui執行緒中建立

2、execute(params...)方法必須在ui執行緒中呼叫

3、不要人為地呼叫上面四個步驟對應的方法。

4、乙個任務只能執行一次。如果再次請求乙個執行,將會報異常。

Xamarin for android學習總結一

1.adapter就是資料讀入記憶體後的 記憶體中介 2.intend,broadcast,server,provider,activity,執行關係圖 3.toast用於向使用者顯示一些幫助 提示 c 中toast是由其他執行緒呼叫更新ui主線程之用 4.android中ui執行緒與後台執行緒互動...

英文文獻翻譯並儲存

1.用word開啟pdf檔案或其他檔案,另存為html格式 2.用google瀏覽器開啟.html檔案,使用自帶google翻譯外掛程式將網頁翻譯成中文,滾動全文使全文全部翻譯,ctrl s儲存網頁 html格式 3.用word開啟儲存的網頁 html 另存為docx格式或者其他需要的檔案格式即可 ...

SOPC Builder Nios學習經驗總結

上的不一致。3.在nois ii中bulid例程hello world都出現了錯誤,錯誤提示為 gdrive c altera kits nios2 components altera nios2 hal src alt busy sleep.c 68 error parse error befor...