你真正了解UI线程更新的几种方式吗—面试必备之深度揭秘
来源:互联网 发布:匡恩网络 内部融资 编辑:程序博客网 时间:2024/06/10 22:56
你真正了解UI线程更新的几种方式吗——面试必备之UI刷新大解密
我们都知道一般面试的时候都会问道Handler的运行机制。有些时候面试官不会直接问道。但是如果问道UI线程更新的方式有哪几种,你知道多少?
今天我们用demo来探讨一下主线程中更新的几种方式
通过简单的点击按钮来实现更新一张我女神的图片
测试效果:
首先我们要知道Handler的运行机制:
这里不再做过多的讲解。请参考
Handler消息机制完全解析(一)Message中obtain()与recycle()的来龙去脉Handler消息机
Handler消息机制完全解析(二)MessageQueue的队列管理
Handler消息机制完全解析(三)—Handler解析之深入浅出
第一种方式
通过Handler发送post一个Runnable对象来实践,post源码:
post(Runnable r)—–> sendMessageDelayed(getPostMessage(r), 0);—->sendMessageAtTime。可以看出最终是通过sendMessageDelayed方法进行发送一个对象的,。
第二种方式
第二种方式是通handler的post方法。与第一种方式大同小异。
第三种方式
这种方式我们也经常用到。其实每部也是调用的是Handler的post方法,内部代码如下:
先判断当前的线程是否为主线程,如果是当前的线程是主线程,则直接运行,是非主线程的话,调用post方法。
第四种方式
这种方式直接调用的View里面的post
View中的post源码如下:
很多人都不知道,View自己内部也封装了自己的异步处理机制,从上面就可以看出,调用的是ViewRootImpl.getRunQueue()的post方法,而在Handler内部调用post的时候,先调用的是sendMessageDelayed方法,然后调用sendMessageAtTime方法,紧接着调用enqueueMessage,最终调用的是queue.enqueueMessage,最终执行的方式都是一样的。
最终效果图点击送一个美女:
测试用例项目地址:
https://github.com/androidstarjack/MyHandlerPostUI
更多文章
2017上半年技术文章集合—184篇文章分类汇总
那些年不容错过的智能刷新加载框
Android中自定义View坐标系那些事
NDK项目实战—高仿360手机助手之卸载监听
MediaPlayer实现金额的语音播报功能
高级UI特效仿直播点赞效果—一个优美炫酷的点赞动画
一个实现录音和播放的小案例
相信自己,没有做不到的,只有想不到的
如果你觉得此文对您有所帮助, 欢迎加入微信公众号:终端研发部
- 你真正了解UI线程更新的几种方式吗—面试必备之深度揭秘
- Android: 在UI线程更新UI的几种方式
- 安卓子线程更新UI的几种方式
- AndroidUI——后台线程更新UI的几种方式
- Android 更新UI的几种方式
- Handler更新UI的几种方式
- Android更新UI的几种方式
- Android 更新UI的几种方式
- Android 更新UI的几种方式
- 面试常客Handler详细解析(更新UI的几种方式)(六)
- android中的线程执行UI更新方式,以及Handler的初步了解
- 在子线程中,更新ui的几种方法
- android中子线程更新UI的几种方法
- 子线程更新UI的几种方法
- 子线程中更新UI的几种方法
- 子线程更新UI的几种方法
- 线程间同步的几种方式(了解)
- Android中更新UI的几种方式
- Counting Cliques HDU
- 几个特殊权限(set uid , set gid , sticky bit),软连接,硬链接
- C#字符串所包含的方法
- 数据结构之 矩阵 模板类
- Qt lnk1158 无法运行rc.exe 解决
- 你真正了解UI线程更新的几种方式吗—面试必备之深度揭秘
- JavaScript 函数与变量的几种特殊情况
- 1029. 旧键盘(20)
- 计算机网络第2章 物理层
- Spring学习笔记之通过FactoryBean配置Bean
- 【安全牛学习笔记】安装java、安装显卡驱动、安装网卡补丁、并发线程限制、电源优化
- 文件操作(2)
- JDBC中Statement接口、ResultSet接口中的方法
- Postman用法简介