Handler.sendMessage(new Message) 鬚髮送新對象

來源:互聯網
上載者:User

Handler.sendMessage(new Message). 這個方法是指 Handler 在發送訊息的時候,需要發送一個新的對象。也就是每次在發送訊息時,在更新了 Date 後,需要重新構造 Message 對象,而不是利用已經構建的對象,否則會報錯:

06-27 09:25:39.073: ERROR/AndroidRuntime(1170): android.util.AndroidRuntimeException: { what=0 when=3496212 arg1=10 obj=android.graphics.drawable.AnimatedRotateDrawable@44f4b1a8 } This message is already in use.
 

例如以下的代碼:

[java:collapse:showcolumns] +
expand sourceview
plaincopy

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

    看似沒錯,但其實在運行時會報錯。

     

    正確的代碼應該是:

    [java:collapse:showcolumns] +
    expand sourceview
    plaincopy

    ·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

       

      若是瞭解 Handler 的訊息佇列機制,就會明白為什麼會報“This message is already in use.”的錯誤了,因為 Handler 每次 sendMessage() 時,都會將一個訊息送到一個訊息對隊列中,所以必須必須是一個新的 Message 對象才行。

      聯繫我們

      該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.