AsyncTask 使用解析

2021-07-01 23:07:26 字數 1302 閱讀 6560

asynctask 能夠適當的,簡單的用於ui執行緒,我們可以很方便的去使用,不用自己去開啟執行緒。

asynctask執行機制是這樣的:所有的任務都會在後台執行緒上執行,最後直接在ui執行緒上發布。繼承asnyctask需要至少覆蓋 doinbackgroud(params…)方法,一般也會去覆蓋 onpostexecute(object result)方法。這裡的2個泛型引數 params 和 result 乙個視啟動程式執行的輸入引數,乙個是後台計算的結果型別,非同步任務還有另外乙個泛型引數prosgress 用來記錄後台任務的執行百分比。

private class mytask extends asynctask
當然這3個引數如果不想用都可以設定為void

乙個非同步任務的執行分4步

(1) onpreexecute(),在ui執行緒上呼叫任務後立即執行,通常用於設定任務,例如在介面顯示乙個進度條

(2)doinbackground(params…)onpreexecute()執行完成後立即呼叫,用於處理耗時操作。非同步任務的引數params也是被傳到這裡,在執行的過程中可以呼叫publishprogress(progress…) 來更新任務進度。

(3)onprogressupdate(progress…)呼叫publishprogress(progress…) 後呼叫,會去呼叫ui執行緒。執行時間不確定。典型的運用是顯示後台執行進度的進度條動畫

(4)onpostexecute(result)但後台doinbackground(params…) 結束後呼叫,回去呼叫ui 執行緒,處理後台返回的結果

由於比較耗記憶體這裡採用了 弱引用的方式來儲存imageview物件

class bitmapdownloadtask extends asynctask

@override

protected bitmap doinbackgroud(string... params)

@override

protected void onpostexecute(bitmap bitmap)

//判斷weakreference不為null

if(imageviewreference != null)}}

}

//url 鏈結

public void downloadimage(string url,imageview imageview)

非同步任務AsyncTask使用解析

asynctask主要用來更新ui執行緒,比較耗時的操作可以在asynctask中使用。asynctask是個抽象類,使用時需要繼承這個類,然後呼叫execute 方法。注意繼承時需要設定三個泛型params,progress和result的型別,如asynctask 上面的說明涉及到幾個方法 好了...

AsyncTask原始碼解析

public class requestinternetdata extends asynctask 後台執行的方法,可以執行非ui執行緒,可以執行耗時的方法。在這個方法裡面執行我們的具體任務 可以看到這裡傳進來的是多個引數,這裡對應我們在呼叫方法的時候可以傳進來多個引數,後面會看到 overrid...

Android中AsyncTask類解析

asynctask暫且翻譯為非同步任務 asynctask使ui執行緒的使用變得恰當和簡單。這個類允許在後台執行操作並且在ui執行緒呈現處理的結果,無需操作執行緒。乙個非同步任務是指在後台執行的執行緒,其執行結果在ui執行緒呈現。乙個非同步任務由3個泛型和4個步驟定義完成。用法 乙個asynctas...