- 博客(7)
- 收藏
- 关注
原创 梳理binder通信流程(binder驱动部分)
在android系统中,与binder打交道是避不开的,因此需要了解binder通信流程。但是binder通信流程比较复杂、涉及模块比较多,很难短时间内把binder通信原理全部搞清楚。网上很多介绍binder通信的文章,一方面年代久远(大多都是5-10年前),虽说binder整个框架没有变,但是其中一些技术细节以及代码是有所变化的;
2024-10-27 21:23:13
1513
1
原创 梳理android中设置线程优先级底层原理
android中设定线程优先级通常有两种方式,一种是通过Process.setThreadPriority方法来实现,另一种是通过Process.setThreadScheduler方法来实现。这两个方法最终会通过系统调用,分别通过执行linux中的setpriority、sched_setscheduler函数来实现线程优先级的置。
2024-06-18 23:22:43
1454
原创 android中常用绑核方式及其原理
android中应用进程可以在多个cpu上运行,当操作系统在cpu之间频繁切换应用时,可能会引起缓存失效、降低缓存命中率,导致cpu的使用效率下降。此外,手机soc芯片通常是大小核架构,相同的任务,大核的处理时间要小于小核的处理时间。因此,为了追求更好的性能表现,android中经常需要在某些时候把一些关键线程/进程绑定在某个或某些指定的cpu上运行,这种操作俗称“绑核”。
2024-05-19 22:48:07
3634
原创 WMS中BLASTSyncEngine机制与Transaction处理流程
WMS中的窗口绘制与显示的载体是Surface,而Surface在底层SurfaceFlinger中的存在形式为Layer,Layer的显示受到上层Surface状态的影响:当Surface被设为可见、且alpha不为0、没有被hidden时,底层Layer才会被判断为可见、进而参与Layer合成流程并在下一帧显示在屏幕上;当上层Surface被销毁时,底层Layer也会从SurfaceFlinger所维护的Layer列表中移除。而上层WMS需要实时的、通过binder通信跨进程将Surface信息更新至S
2024-05-04 23:38:52
2810
4
原创 探索Surface同步机制
Surface同步机制为android13新增,相关核心代码为SurfaceSyncer.java,主要作用为提供ViewRootImpl与SurfaceView(假如窗口存在SurfaceView的情况下)同步服务,实现在主Surface与SurfaceView均完成绘制时再去上报至WMS进行窗口状态的切换,避免主Surface绘制完成上报至WMS后、同时SurfaceView迟迟没有绘制完成使得startingWindow过早移除从而产生黑屏的现象。
2023-12-10 15:28:07
2416
2
原创 anr触发机制与处理流程
本文主要是针对窗口发生anr的情况进行梳理,其他情况诸如 Service、Broadcast等发生anr不在本文关注范围内。
2023-10-22 14:12:22
561
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人