请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于主线程Looper循环因为消息为空后,阻塞住唤醒问题

老师,有几个场景不太懂,想请教下;
假设场景:
1、如果主线程此时looper循环因为MessageQueue中消息为空而阻塞住了,此时主线程休眠了;如果此时Actitity(可理解为客户端)拿主线程的handler 可以再往队列里再入队一个消息,从而唤醒主线程么?(主线程自己唤醒自己)

2、如果主线程休眠是必须由别的线程唤醒,能举一个关于主线程因为消息为空而休眠,被binder线程唤醒的例子么?

正在回答

1回答

您好,第一个问题,主线程如果已经休眠了,只能通过别的线程来唤醒了,自己是没法唤醒自己的

第二个问题,比如你点了一个按钮,系统给事件分发到App进程,这就涉及到跨进程通信,主线程被binder线程唤醒了

2 回复 有任何疑惑可以回复我~
  • 提问者 小旋风_qsh #1
    谢谢老师
    回复 有任何疑惑可以回复我~ 2019-12-19 09:57:09
  • oRo #2
    请问如果是延时任务造成的阻塞,超时被唤醒,请问里面的原理是:这里的阻塞也是进入休眠状态,由其他线程唤醒的吗?  如果是其他线程唤醒的话,里面的超时机制是怎样的?
    回复 有任何疑惑可以回复我~ 2020-01-20 14:03:27
  • 风语 回复 oRo #3
    这里不是其他线程唤醒的,而是在阻塞的时候就算好一个超时时间,到时间就返回了。
    回复 有任何疑惑可以回复我~ 2020-02-01 11:13:44
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信