为了账号安全,请及时绑定邮箱和手机立即绑定

为什么主线程就可以直接创建handler?

他会自动绑定主线程的LOOPER?


是不是不推荐自己在子线程中创建looper对象?

正在回答

2 回答

每一个handler必须要对应一个looper,主线程会自动创建Looper对象,不需要我们手动创建,所以主线程可以直接创建handler。

在new handler的时候没有传入指定的looper就会默认绑定当前创建handler的线程的looper,如果没有looper就报错。


如果自己开个子线程,那肯定得自己创建looper对象啊,或者用HandlerThread,的getlooper也行。

1 回复 有任何疑惑可以回复我~
#1

嗟嗟嗟 提问者

非常感谢!
2016-07-06 回复 有任何疑惑可以回复我~

老师有讲的,

handler负责消息发送,Looper负责接受Handler发送的消息,并直接把消息回传给handler自己(通过Looper.looper()方法)。MessageQueue就是一个存储消息的容器。

记着这句话你就不会那么纠结了...

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android面试常客Handler详解
  • 参与学习       54881    人
  • 解答问题       183    个

学Android开发,必学Handler,也是Android面试常客

进入课程

为什么主线程就可以直接创建handler?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信