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 對象才行。