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...