非同步執行緒之AsyncTask

2022-05-02 06:24:11 字數 1583 閱讀 9550

1、使用新執行緒的原因:

android的ui執行緒主要負責處理使用者的按鍵事件、使用者觸屏事件及螢幕繪圖事件,因此其它其它操作不應該、也不能阻止ui執行緒,否則ui介面將會變得停止響應。

2、解決新執行緒不能更新ui元件的問題

2.1、使用handler實現執行緒通訊

2.2、activity.runonuithread(runnable)

2.3、view.post(runnable)

2.4、view.postdelayed(runnable)

2.5、asynctask

3、asynctask的使用:asynctask是乙個抽象類,通常用於被繼承

3.1、引數介紹:params,啟動任務執行輸入引數的型別,progress後台任務完成的進度值的型別,result後台完成後返回結果的型別

3.2、方法介紹:

3.2.1、asynctask.cancel(boolean

)如果是true,如果執行緒執行,則會被打斷,如果是false,執行緒將會被執行執行完成

3.2.2、onpreexecute()//

一般用來做一些初始化操作

3.2.3、doinbackground(string... strings)//

處理後台執行緒要完成的任務

3.2.4、onprogressupdate(integer ... values)

//在doinbackgrounp()方法中呼叫 publishprogress(progress... values)方法更新任務執行的進度,將會觸發該方法

3.2.5、onpostexecute(integer result)//

doinbackgrounp()完成後自動呼叫此方法,用來處理結果

new asynctask()

protected

void

onprogressupdate(integer ... values){}

//doinbackgrounp()完成後自動呼叫此方法,用來處理結果

protected

void

onpostexecute(integer result) {}

}.execute(account,pwd,host);

3.3、超時處理

private handler uihandler = new

handler()

break

; }}};

final mytask mytask = new mytask();//

繼承asynctask

//只是打斷asynctask,並沒有結束掉mytask.cancel(true);

mytask.execute(account,pwd,host);

thread thread = new

thread()

catch

(interruptedexception e)

catch

(executionexception e)

catch

(timeoutexception e)}};

AsyncTask 非同步執行緒 用法

asynctask介紹 android的asynctask比handler更輕量級一些,適用於簡單的非同步處理。首先明確android之所以有handler和asynctask,都是為了不阻塞主線程 ui執行緒 且ui的更新只能在主線程中完成,因此非同步處理是不可避免的。android為了降低這個開...

AsyncTask 非同步處理

1,object,用於指定doinbackground的引數 2,integer,用於指定onprogressupdate的引數 3,uri,用於指定doinbackground的返回型別和onpostexecute的引數型別 public class updatetask extends asyn...

AsyncTask非同步任務

asynctask非同步任務怎麼寫 寫乙個類繼承asynctask,重寫方法 doinbackgroud 再new 這個類,執行物件 execute 在ui執行緒裡面寫這個類的實現方法 doinbackground有可能是新開的執行緒,有可能是執行緒池裡面的執行緒 執行順序 onpreexecute...