final boolean
sendEmptyMessageAtTime(int what, long uptimeMillis)
final boolean
sendEmptyMessageDelayed(int what, long delayMillis)
final boolean
sendMessage(Message msg)
final boolean
boolean
sendMessageAtTime(Message msg, long uptimeMillis)
final boolean
sendMessageDelayed(Message msg, long delayMillis)
MessageQueue
是一種數據結構,見名知義,就是一個消息隊列,存放消息的地方。每一個線程最多只可以擁有一個MessageQueue數據結構。
創建一個線程的時候,并不會自動創建其MessageQueue。通常使用一個Looper對象對該線程的MessageQueue進行管理。主線程創建時,會創建一個默認的Looper對象,而Looper對象的創建,將自動創建一個Message Queue。其他非主線程,不會自動創建Looper,要需要的時候,通過調用prepare函數來實現。
java.util.concurrent對象分析
對于過去從事Java開發的程序員不會對Concurrent對象感到陌生吧,他是JDK 1.5以后新增的重要特性作為掌上設備,我們不提倡使用該類,考慮到Android為我們已經設計好的Task機制,我們這里Android開發網對其不做過多的贅述。
Task以及AsyncTask
在Android中還提供了一種有別于線程的處理方式,就是Task以及AsyncTask,從開源代碼中可以看到是針對Concurrent的封裝,開發人員可以方便的處理這些異步任務。 當然涉及到同步機制的方法和技巧還有很多,考慮時間和篇幅問題不再做過多的描述。