為什么使用Handler需要Looper

因為在Handler的構造函數里面,mLooper=Looper.myLooper();如果mLooper==null的話,就會拋出“can't create handler inside thread that has not called Looper.prepare()”異常。為什么需要Looper呢?因為Looper的作用是不斷的從MessageQueue中通過queue.next()方法取出消息,然后交給Handler處理,而Looper在構造函數中new了一個MessageQueue,并保存了當前線程對象,如果不構造Looper的話,就不會有MessageQueue,所以后面的取出消息就談不上了,所以使用Handler需要Looper。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容