Handler:多线程通信机制

相关资料:

https://blog.csdn.net/carson_ho/article/details/80305411

https://blog.csdn.net/carson_ho/article/details/80175876

https://www.bilibili.com/video/BV1j54y1H7Kj?from=search&seid=6749523411759852997

相关面试题:

https://blog.csdn.net/weixin_44819566/article/details/115619339


一.价值

用于在子线程和主线程(UI)线程之间进行通信的,一般将一些耗时操作放在子线程中执行,当产生一些UI更新数据,可通过handler将信息从子线程传递到主线程,从而更新UI。

问题:handler 实质就是线程之间的通信?其他的方式不可以吗,为什么非要弄个Handler来处理?

注意:资料中说可以解决UI更新并发操作的问题?不太明白这是啥?

白话:这个任务执行时间太长了,子线程你先干着,完成之后,你子线程发送到messageQueue 中,然后我主线程定期去看,如果你完成后了,我就接着你的做,

二. 架构图

 该套系统,部署在主线程中。

问题:子线程是如何拿到主线程中的handler ,从而发送消息的?

三. 代码案例

子线程执行任务,并发送message

主线程中的handler接受到消息,并处理

四. handler post 方法详解

相关资料:https://blog.csdn.net/lfdfhl/article/details/40016085

实际上是对handler.sendMessage 方法的封装,从程序上看,好像就在子线程中完成了UI的更新

问题: 有sendMessage方法,为什么还要有个post方法?

答: https://cloud.tencent.com/developer/article/1727098

原文地址:https://www.cnblogs.com/helloqiufei/p/15115061.html