class LooperThread extends Thread {

public Handler mHandler;
public void run() {
new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
Post:Post允許把一個Runnable對象入隊到消息隊列中。它的方法有:post(Runnable)、 postAtTime(Runnable,long)、postDelayed(Runnable,long)。
sendMessage:sendMessage允許把一個包含消息數(shù)據(jù)的Message對象壓入到消息隊列中。它的方法有:sendEmptyMessage(int)、sendMessage(Message)、sendMessageAtTime(Message,long)、sendMessageDelayed(Message,long)。
Message:Message是一個final類,所以不可被繼承。使用Message.obtain()這個靜態(tài)的方法或者Handler.obtainMessage()獲取。Message.obtain()方法具有多個重載方法,大致可以分為為兩類,一類是無需傳遞Handler對象,對于這類的方法,當填充好消息后,需要調(diào)用Handler.sendMessage()方法來發(fā)送消息到消息隊列中。第二類需要傳遞一個Handler對象,這類方法可以直接使用Message.sendToTarget()方法發(fā)送消息到消息隊列中,這是因為在Message對象中有一個私有的Handler類型的屬性Target,當時obtain方法傳遞進一個Handler對象的時候,會給Target屬性賦值,當調(diào)用sendToTarget()方法的時候,實際在它內(nèi)部還是調(diào)用的Target.sendMessage()方法。
總結(jié):一個Looper對應一個MessageQueue,一個線程對應一個Looper,一個線程可以有多個looper。
Handler handler = new Handler(){...}創(chuàng)建Handler。這樣創(chuàng)建的handler是在主線程即UI線程下的Handler,即這個Handler是與UI線程下的默認Looper綁定的。HandlerThread實際上就一個Thread,只不過它比普通的Thread多了一個Looper。創(chuàng)建HandlerThread時要把它啟動了,即調(diào)用start()方法。然后創(chuàng)建Handler時將HandlerThread中的looper對象傳入。
HandlerThread thread = new HandlerThread("MyHandlerThread");
thread.start();
mHandler = new Handler(thread.getLooper());
mHandler.post(new Runnable(){...});
那么這個Handler對象就是與HandlerThread這個線程綁定了(這時就不再是與UI線程綁定了,這樣它處理耗時操作將不會阻塞UI)。
上文描述的就是handler消息處理機制的用法,具體使用情況還需要大家自己動手實驗使用過才能領會。如果想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)站名稱:handler消息處理機制的用法-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://chinadenli.net/article8/cecpip.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、小程序開發(fā)、企業(yè)建站、虛擬主機、自適應網(wǎng)站、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容