- 博客(7)
- 收藏
- 关注
原创 Input系统—事件处理全过程
Input系统—InputReader线程:通过EventHub从/dev/input节点获取事件,转换成EventEntry事件加入到InputDispatcher的mInboundQueue。Input系统—InputDispatcher线程:从mInboundQueue队列取出事件,转换成DispatchEntry事件加入到connection的outboundQueue队列。再然后开始处理分发事件,取出outbound队列,放入waitQueue.Input系统—UI线程。
2024-12-26 15:19:38
821
原创 InputManagerService的启动过程
当用户触摸屏幕或者按键操作,首次触发的是硬件驱动,驱动收到事件后,将该相应事件写入到输入设备节点, 这便产生了最原生态的内核事件。接着,输入系统取出原生态的事件,经过层层封装后成为KeyEvent或者MotionEvent;最后,交付给相应的目标窗口(Window)来消费该输入事件。可见,输入系统在整个过程起到承上启下的衔接作用。Native层的InputReader负责从EventHub取出事件并处理,再交给InputDispatcher;
2024-12-25 15:33:30
1860
原创 进程启动流程分析
1、zygote系统里面的第一个zygote进程运行之后,在这之后再开启App,就相当于开启一个新的进程。而为了实现资源共用和更快的启动速度,Android系统开启新进程的方式,是通过fork第一个zygote进程实现的。SystemServer也是一个进程,而且是由zygote进程fork出来的。比如ActivityManagerService、PackageManagerService、WindowManagerService。
2024-12-13 19:36:41
1824
原创 hang_detect典型案例
注册IRQ 有两种方式,requests_irq和request_thread_irq。其中执行synchronize_irq, 这个是等目前的IRQ 做完为后续的disable irq: arch_suspend_disable_irqs 做准备。gf516m 这个指纹识别的irq,通过request_thread_irq 注册,然后和TEE 通讯mc_wait_notification,结果卡住了,从而导致hang detect 重启。看到上面的log,那么就可以判断是hang detect的问题了。
2024-11-26 11:14:39
693
原创 Java ConcurrentModificationException 异常分析与解决方案
当集合的结构发生变化(如通过 add、remove 方法修改集合)时,这个索引会与实际的集合状态不同步,即迭代器内部维护的modCount与ArrayList内部实际的modCount不匹配,导致迭代器抛出 ConcurrentModificationException。这种异常确保了迭代器的。在实际开发中,应遵循最佳实践,确保在迭代过程中不直接修改集合,或使用安全的修改方法,以保持代码的稳定性和可靠性。1、安全性:使用迭代器的 remove 方法是最安全的,因为它是专为在迭代过程中修改集合而设计的。
2024-11-17 13:57:30
676
原创 MTK——Android watchdog with Hang Detect
framework层包含带有Hang Detect code的Android watchdog,其run方法中通过ExceptionLog类的WDTMatterJava方法调用到native层,ExceptionLog的java实现在frameworks/base/core/java/com/mediatek/aee/ExceptionLog.java中。2)nativenative层是ExceptionLog的jni实现,code在。
2024-11-06 18:17:54
1454
原创 Android深入浅出——Epoll机制
一个核心的方法是mHandler.getLooper().getQueue().isPolling()watchdog并没有过多解释,这还得去Handle源码来探究Epoll机制。Looper是整个消息机制流水线的发动机,其动力在。Looper直接调用了queue的。MessageQueue的。学习watchdog时,
2024-11-01 18:20:03
387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人