因为在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了解太过狭隘,于...