handler
(1)什么是Handler:?
?? 在平時的安卓開發(fā)過程中,Handler一定不少見,Handler是Android消息機制的上層接口,這使得在開發(fā)過程中只需要和Handler交互即可。很多人認為Handler的作用就是更新UI,的確沒錯,但是更新UI僅僅是Handler的一個特殊的使用場景。具體來說,就是有時候需要在子線程做一些耗時操作,比如說訪問網(wǎng)絡或者耗時的I/O操作,當這些耗時操作完成時,程序的UI進行相應的改變。由于安卓開發(fā)規(guī)范的限制,我們不能在子線程中訪問UI控件,因為UI的控件是線程非安全的,這個時候通過Handler就可以將更新UI的操作切換到主線程中執(zhí)行。下面我就通過代碼來演示Handler的基本用法。
(2)Handler有什么用?
Handler這個類就是管理某個線程(也可能是進程)的消息隊列,比如讓Handler處理主線程的消息隊列,這樣就可以將一些耗時任務放到其他線程之中,待任務完成之后就往主線程的消息隊列中添加一個消息,這樣Handler的Callback,即handleMessage就會被調(diào)用。但是Handler并不是線程安全的,因此官方文檔中建議將Handler作為一個靜態(tài)內(nèi)部類。
所以Handler只是處理消息,耗時任務放在其他線程。
Handler的使用主要是android中無法在主線程(即UI線程)中訪問網(wǎng)絡、無法在子線程中訪問UI線程元素。一般是在子線程中訪問網(wǎng)絡,然后使用Handler發(fā)送message通知主線程處理UI更新操作。
(3)Handler機制:

(4)Handler四大重要的類:
Looper,Message,MessageQueen,Handler和一個線程
1.一個線程可以產(chǎn)生一個Looper對象,由他來管理線程里的MessageQueen(消息隊列)。
2.Handler你可以構(gòu)造Handler對象來與Looper溝通,以便push新消息到Message Queen里面,或者接受Looper從MessageQueen鎖取出來的消息。
3.MessageQueen(消息隊列),用來存放線程存放線程放入的消息。
4.Handler消息的封裝者和處理者,handler負責將需要傳遞的信息封裝成Message,通過調(diào)用handler對象的obtainMessage()來實現(xiàn);將消息傳遞給Looper,這是通過handler對象的sendMessage()來實現(xiàn)的。繼而由Looper將Message放入MessageQueue中。當Looper對象看到MessageQueue中含有Message,就將其廣播出去。該handler對象收到該消息后,調(diào)用相應的handler對象的handleMessage()方法對其進行處理。
5.線程,Ui thread通常就是mainThread,Android啟動程序時會替他建立一個MeassageQueen。