handler:它的作用有兩個——傳送訊息和處理訊息,程式使用handler傳送訊息,由handler傳送的訊息必須被送到指定的messagequeue。也就是說希望handler正常工作,必須在當前執行緒中有乙個messagequeue;否則訊息就沒有messagequeue進行儲存了。不過messagequeue是由looper負責管理的,也就是說,如果希望handler正常工作,必須在當前執行緒中有乙個looper物件,為了保證當前執行緒中有looper物件可如下兩種處理:
looper:每個執行緒只有乙個looper,它負責管理messagequeue,會不斷從messagequeue中取出訊息,並將訊息分給物件給對應的handler處理。
messagequeue:有looper負責管理,它採用先進先出的方式來管理message。
handler:它能把訊息傳送給looper管理的messagequeue,並負責處理looper分給它的訊息。
執行緒中使用handler的步驟如下:
呼叫了looper的prepare()的方法為當前執行緒建立looper物件,建立looper物件時,它的構造器會建立與之配套的messagequeue。
有了looper之後,建立了handler子類的例項,重寫handlermessage()方法,該方法負責處理來自其他執行緒的訊息。
呼叫looper的loop()方法looper。
一、解決新執行緒無法更新ui組建問題的方案
為了解決新執行緒不能更新ui組建的問題,andorid提供了如下幾種解決方案:
三、asynctask抽象類
asynctask是乙個抽象類,通常用於被繼承,繼承asynctask需要指定如下三個泛型引數:
四、asynctask的特點
五、使用asynctask的步驟
1.建立asynctask的子類,並為三個泛型引數指定型別。如果某個泛型引數不需要指定型別,可將它指定為void。
2.根據需要,實現asynctask的如下方法:
doinbackground(params …):後台執行緒將要完成的任務,可以呼叫publishprogress(progress... values)方法更新任務執行進度。
onprogressupdate(progress... values):在doinbackground()方法中呼叫publishprogress()方法更新任務的執行進度後,就會觸發該方法。
onpreexecute():執行後台耗時操作前被呼叫,通常使用者完成一些初始化操作,比如在介面上顯示進度條。
onpostexecute(result result):當doinbackground()完成後,系統會自動呼叫onpostexecute()方法,並將doinbackground方法返回的值傳給該方法。
3.呼叫asynctask子類的例項的execute(params... params)開始執行耗時任務。
六、使用asynctask時必須遵守的規則
Android 事件處理
view 提供了若干事件.在渲染 布局 展現 相關事件的觸發順序總結如下 constructors onfinishinflate 當view和它的所有子物件從xml中匯入之後,呼叫此方法 layout onmeasure int,int view會呼叫此方法,來確認自己及所有子物件的大小 onla...
Android事件處理
按鍵捕獲先後順序 驅動層 系統層 library層 框架層 應用層。應用層return false,事件會繼續向底層傳遞。應用層return true,事件終止不再傳遞。呼叫super方法,activity會決定事件處理方式以及是否向底層傳輸。return false和return true會導致按...
Android中Touch事件的處理
最近和隊友做了個微博傳送助手fuubo 由於主要是做前台,所以當中碰到了很多蛋疼的東西,做過android的人都知道前台是android的硬傷,在 android應用層做得很好的人前台功底都是很強的,這裡就我對處理前台動畫時對android的touch事件 的一些體會心得給大家分享下,如果有錯誤的地...