非同步處理的目的:完成任務的同時不阻塞主線程(ui執行緒)
涉及handler、looper、message、thread四個物件。
實現非同步的流程:主線程啟動thread->子執行緒執行並生成message->looper獲取message並傳遞給handler->handler逐個獲取message並進行ui更新
優點:結構清晰,功能定義明確。對於多個後台任務時簡單清晰
缺點:在單個後台非同步處理時**過多,結構過於複雜
是乙個直接繼承於object類的輕量級後台任務類,包為:android.os.asynctask。在類中實現非同步操作,並提供介面反饋當前非同步執行的程度,最後反饋執行的結果給ui主線程。
優點:簡單快捷,過程可控
缺點:在使用多個非同步操作和並需要進行ui變更時較為複雜
public abstract class asynctask{}
params:啟動任務執行的輸入引數,比如http請求的url
progress:後台任務執行的進度百分比
result:後台任務執行的最終返回結果
重寫的方法:
onpreexcute():
doinbackground(params params)
onprogressupdate(progress value)
onpostexcute(result result)
oncancelled()
注意事項:
1、asynctask的例項必須在ui thread中建立
2、execute方法必須在ui thread中呼叫
3、不需要手動呼叫onpreexcute(),doinbackground(params params),onprogressupdate(progress value),onpostexcute(result result)這四個方法
4、該task只能被執行一次,否則多次呼叫時會出現異常
5、不能在doinbackground()中更改ui元件的資訊
AsyncTask 非同步處理
1,object,用於指定doinbackground的引數 2,integer,用於指定onprogressupdate的引數 3,uri,用於指定doinbackground的返回型別和onpostexecute的引數型別 public class updatetask extends asyn...
簡單的非同步處理AsyncTask
1.首先建立 asynctask 然後 execute params.params 執行開啟乙個非同步任務 重寫其中的方法 2.onpreexecute 在execute params.params 被呼叫後立即執行 準備過程 在執行後台任務前做一些ui操作 3.doinbackground par...
AsyncTask(非同步訊息處理機制)
在android中有兩條原則,第一條是 我們不能再ui thread中進行耗時的操作 以免阻塞ui thread 第二條是 不能再ui thread之外的執行緒中操縱ui元素 asynctask允許我們在後台執行乙個非同步任務,我們可以將耗時操作放在非同步任務中執行,並隨時將任務執行的結果返回給ui...