Android中的Handler類介紹

來源:互聯網
上載者:User

     在Android編程中,只有事件處理往往並不能滿足使用者與程式互動的需要,下面將對Android平台下訊息的傳遞機制Handler訊息進行介紹。   

     在Android平台中,新啟動的線程是無法訪問Activity裡的Widget的,當然也不能將運行狀態外送出來,這就需要有Handler機制進行訊息的傳遞了,Handler類位於android.os包下,主要的功能是完成Activity的Widget與應用程式中線程之間的互動。接下來對該類中常用的方法進行介紹,如下表所示。

方法簽名

描    述

public void handleMessage (Message msg)

子類對象通過該方法接收資訊

public final boolean sendEmptyMessage (int what)

發送一個只含有what值的訊息

public final boolean sendMessage (Message msg)

發送訊息到Handler,

通過handleMessage方法接收

public final boolean hasMessages (int what)

監測訊息佇列中是否還

有what值的訊息

public final boolean post (Runnable r)

將一個線程添加到訊息佇列

    在多線程中經常要使用Handler,Thread和Runnable這三個類。Android的CPU分配的最小單元是線程,Handler一般是在某個線程裡建立的,因而Handler和Thread就是相互綁定的,一一對應。 而Runnable是一個介面,Thread是Runnable的子類。所以說,他倆都算一個線程。 HandlerThread顧名思義就是可以處理訊息迴圈的線程,他是一個擁有Looper的線程,可以處理訊息迴圈。 與其說Handler和一個線程綁定,不如說Handler是和Looper一一對應的。 最後需要說明的是,在UI線程(主線程)中:

             mHandler=new Handler();

             mHandler.post(new Runnable(){

                void run(){

                      //執行代碼... }

            });

這個線程其實是在UI線程之內啟動並執行,並沒有建立線程。 常見的建立線程的方法是:

            Thread thread = new Thread();

            thread.start();

 

            HandlerThread thread = new HandlerThread("string");

            thread.start();

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.