为什么使用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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容