- 博客(10)
- 收藏
- 关注
原创 android屏幕刷新之三
① 调整、更新数据后,记录当前帧、上一帧的数据信息,如果发生跳帧则申请并等待下一次 VSync 信号到来,然后返回。② 没有发生跳帧,则按照事件类型的优先级执行 CallBack 回调,并传入上一步记录的当前帧的数据信息。
2025-05-16 17:30:32
856
原创 android屏幕刷新之二
之前从源码跟进activity刷新,在通过setContentView将布局加载到DecorView,并且最后因 ViewRootImpl.requestLayout 请求布局才可以将布局刷新到屏幕。但是对于 View 和 ViewRootImpl 的具体实现,并没有了解。此次,在源码基础上学习该部分内容。android中 View 的刷新绘制通常由三种情况触发:在 Android 的 UI 渲染流程中,View.requestLayout() 和 ViewGroup.requestLayout() 是非常
2025-05-12 14:41:06
845
原创 Handler消息机制-Looper(system)
接续 “NativeMessageQueue” 部分,在NativeMessageQueue的 JNI 方法实现中,最终几乎全部都是在操作 “” 对象。接下来看一下Looper(system)它如何通过监听和处理消息队列中的事件,确保线程能够按照预定的方式响应各种消息和回调。
2025-04-14 10:57:56
573
原创 Handler消息机制-NativeMessageQueue
Android Handler消息机制,MessageQueue作为消息队列存储Message,都是存放在Java 端的。MessageQueue引入native,为了使用 epoll 机制,在无可执行消息时进行线程阻塞。之前在中知晓,MessageQueue的构造函数会初始化native层MessageQueue。现在进一步探讨这部分内容。
2025-04-14 10:54:29
823
原创 Handler消息机制-Looper
ThreadLocal 是一个线程本地存储(Thread-Local Storage)的类,它允许每个线程拥有自己独立的变量副本,从而避免多线程环境下的竞争条件。ThreadLocal 的核心思想是为每个线程提供一个独立的变量存储空间,线程之间互不干扰。private static Observer sObserver 是一个内部类对象,用于监听 Looper 的消息循环事件。这个机制主要用于调试和性能监控,可以帮助开发者观察消息循环的执行情况,例如消息的分发耗时、消息队列的状态等。/**/**
2025-04-09 15:10:53
791
原创 Handler消息机制-MessageQueue
当消息队列空闲时,会调用 queueIdle() 方法。对于 IdleHandler 这个接口调用,重写queueIdle()函数,在其中实现自定义功能。返回 true 表示继续保留 IdleHandler,下次空闲时再次调用。返回 false 表示移除 IdleHandler,不再调用。
2025-04-09 14:49:49
596
原创 Handler消息机制-Message
Handler 消息处理机制主要由 Handler、Looper、MessageQueue 和 Message 四部分组成。在“Handler消息机制-Handler” 中介绍了Handler部分,本次则学习一下 Message 消息。Message 是 Android 中用于线程间通信的核心类,它是 Handler 消息机制的基本单元。Message 封装了需要传递的数据和任务,并通过 Handler 发送到目标线程的 MessageQueue 中,最终由 Looper 分发,进一步做处理。
2025-04-08 18:46:45
687
原创 Handler消息机制-Handler
Handler 消息处理机制主要由 Handler、Looper、MessageQueue 和 Message 四部分组成。Handler作用:用于发送消息和处理消息。发送消息到 MessageQueue。处理从 Looper 分发的消息。特点:每个 Handler 绑定到一个 Looper,从而绑定到一个线程。可以发送 Message 或 Runnable。Message作用:消息的载体,封装了需要处理的任务或数据。通过 what 字段标识消息类型。通过 obj 字段传递数据。
2025-04-07 16:59:28
932
1
原创 关于Systrace的学习记录
Choreographer 的引入,主要是配合 Vsync ,给上层 App 的渲染提供一个稳定的 Message 处理的时机,也就是 Vsync 到来的时候 ,系统通过对 Vsync 信号周期的调整,来控制每一帧绘制操作的时机。Android 主线程运行的本质,其实就是 Message 的处理过程,我们的各种操作,包括每一帧的渲染操作,都是通过 Message 的形式发给主线程的 MessageQueue ,MessageQueue 处理完消息继续等下一个消息。启下:负责请求和接收 Vsync 信号。
2024-08-19 09:56:59
1153
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人