因為在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。
為什么使用Handler需要Looper
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- Handler的由來 當程序第一次啟動的時候,Android會同時啟動一條主線程(Main Thread)來負責處...
- Android Handler機制系列文章整體內容如下: Android Handler機制1之ThreadAnd...
- Android消息處理機制估計都被寫爛了,但是依然還是要寫一下,因為Android應用程序是通過消息來驅動的,An...
- 文章獨家授權公眾號:碼個蛋更多分享:http://www.cherylgood.cn 談到Android開發,就離...
- 最近在寫一篇內存泄漏的博客,還在完善中,其中寫到handler引起的內存泄漏,發現對Handler了解太過狹隘,于...