什么是Handler?

Handler可以發(fā)送和處理消息對象或Runnable對象,這些消息對象和Runnable對象與一個線程相關(guān)聯(lián)。每個Handler的實(shí)例都關(guān)聯(lián)了一個線程和線程的消息隊列。當(dāng)創(chuàng)建了一個Handler對象時,一個線程或消息隊列同時也被創(chuàng)建,該Handler對象將發(fā)送和處理這些消息或Runnable對象。

handler類有兩種主要用途:

  • 執(zhí)行Runnable對象,還可以設(shè)置延遲。

  • 兩個線程之間發(fā)送消息,主要用來給主線程發(fā)送消息更新UI。

為什么要用Handler

解決多線程并發(fā)問題,假設(shè)如果在一個activity中,有多個線程去更新ui,并且都沒有加鎖機(jī)制,那界面顯示肯定會不正常。于是andoird官方就封裝了一套更新ui的機(jī)制,也可以用handler來實(shí)現(xiàn)多個線程之間的消息發(fā)送。

如何使用Handler

handler常用的方法有以下這些:

post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable,long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)

網(wǎng)友評論