028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

不知庐山真面目只缘身在此山中,讲解一下Handler-创新互联

o(╥﹏╥)o今天太困了,啥也不想干。就把之前收集的资料拿出来温习一下刚好和大家共享下

创新互联是一家专业提供莱西企业网站建设,专注与成都网站设计、做网站、H5建站、小程序制作等业务。10年已为莱西众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

不知庐山真面目只缘身在此山中,讲解一下Handler

之前在" rel="nofollow">GitHub
上更新了些关于面试类的文章,含有从基础到进阶。含有BATJ.字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等应有尽有。还有辅之相关的视频+学习笔记

(更多完整项目下载。未完待续。源码。图文知识后续上传github。)
可以点击关于我联系我获取完整PDF
(VX:mm14525201314)

Handler

1、谈谈消息机制 Handler 作用 ?

负责跨线程通信,这是因为在主线程不能做耗时操作,而子线程不能更新 UI,所以当子线程中进行耗时操作后需要更新 UI时,通过 Handler 将有关 UI 的操作切换到主线程中执行。

具体分为四大要素:

具体流程如下:
不知庐山真面目只缘身在此山中,讲解一下Handler

2、一个线程能否创建多个 Handler,Handler 跟 Looper 之间的对应关系 ?
3、软引用跟弱引用的区别
4、Handler 引起的内存泄露原因以及最佳解决方案

为什么会导致泄露:
Handler 允许我们发送延时消息,如果在延时期间用户
关闭了 Activity,那么该 Activity 会泄露。 这个泄露
是因为 Message 会持有 Handler,而又因为 Java 的
特性,内部类会持有外部类,使得 Activity 会被
Handler 持有,这样最终就导致 Activity 泄露。

怎么解决:
将 Handler 定义成静态的内部类,在内部持有
Activity 的弱引用,并在 AcitivityonDestroy()
调用 handler.removeCallbacksAndMessages(null)
及时移除所有消息。

5、为什么系统不建议在子线程访问 UI?

Android 的 UI 控件不是线程安全的,如果在多线程中并发访问
可能会导致 UI 控件处于不可预期的状态

这时你可能会问为何系统不对 UI 控件的访问加上锁机制呢?因为:

7、使用 Handler 的 postDealy 后消息队列会有什么变化?

如果队列中只有这个消息,那么消息不会被发送,而是计算到
时唤醒的时间,先将 Looper 阻塞,到时间就唤醒它。但如果此时要加入新消息,该消息队列的对头跟 delay 时间相比更长,
则插入到头部,按照触发时间进行排序,队头的时间最小、队
尾的时间大

8丶子线程直接 new 一个 Handler 吗?怎么做?

不可以,因为在主线程中,Activity 内部包含一个 Looper 对
象,它会自动管理 Looper,处理子线程中发送过来的消息。而
对于子线程而言,没有任何对象帮助我们维护 Looper 对象,所以需要我们自己手动维护。所以要在子线程开启 Handler 要先
创建 Looper,并开启 Looper 循环

9、Message 可以如何创建?哪种效果更好,为什么?

可以通过三种方法创建:

后两者效果更好,因为 Android 默认的消息池中消息数量是 10,而后
两者是直接在消息池中取出一个 Message 实例,这样做就可以避免多
生成 Message 实例。

请查看完整的PDF版
(更多完整项目下载。未完待续。源码。图文知识后续上传github。)
可以点击关于我联系我获取完整PDF
(VX:mm14525201314)

不知庐山真面目只缘身在此山中,讲解一下Handler

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:不知庐山真面目只缘身在此山中,讲解一下Handler-创新互联
链接分享:http://www.tsicrk.com/article/ccgdpg.html

其他资讯

让你的专属顾问为你服务

2.4697s