自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 内存回收过程中psi内存压力的更新以及psi压力对lmkd查杀的影响

本文主要探究在慢速内存分配路径中触发直接内存规整与直接内存回收时Psi压力的更新过程,以及psi压力对lmkd查杀的影响。

2025-12-14 23:04:11 747

原创 transition流程对无焦点anr的影响

(1)transition merge的本质是对应transaction的merge;(2)transition merge成功与否都是正常现象,都有对应的流程;(3)transition merge成功与否,都可能产生无焦点anr;(4)transition merge成功,对应leash图层alpha会设置为0,在launcher后续动画流程中恢复;

2025-10-08 19:18:00 1058

原创 simpleperf抓取火焰图过程记录

1.安装NDKAndroid Studio File->Settings->System Settings->Android SDK->SDK Tools,选择NDK并安装,便于后续解析抓取到的perf数据。2.安装perl直接在cmd窗口中使用pip安装即可。3.安装FlameGraph需通过git工具从github下载FlameGraph,用于生成火焰图。4.安装python3.9+用于运行simpleperf目录下的python解析脚本,版本要求3.9+。

2025-10-07 22:38:35 738

原创 android绘制流程中fence作用与流转

插入图片 后面有空再贴图吧>总结一下fence流转流程如下:(1)应用渲染线程通过dequeueBuffer从bufferQueue拿到处于free状态的buffer进行绘制,将buffer状态从free切换为dequeued状态;(2)渲染线程绘制完成后通过queueBuffer将buffer入队列,并将buffer状态从dequeued切换为queued状态,下一步交给GPU处理buffer,并创建acquireFence追踪GPU是否绘制完成;

2025-08-31 23:25:50 1393

原创 梳理binder通信流程(binder驱动部分)

在android系统中,与binder打交道是避不开的,因此需要了解binder通信流程。但是binder通信流程比较复杂、涉及模块比较多,很难短时间内把binder通信原理全部搞清楚。网上很多介绍binder通信的文章,一方面年代久远(大多都是5-10年前),虽说binder整个框架没有变,但是其中一些技术细节以及代码是有所变化的;

2024-10-27 21:23:13 2585 1

原创 梳理android中设置线程优先级底层原理

android中设定线程优先级通常有两种方式,一种是通过Process.setThreadPriority方法来实现,另一种是通过Process.setThreadScheduler方法来实现。这两个方法最终会通过系统调用,分别通过执行linux中的setpriority、sched_setscheduler函数来实现线程优先级的置。

2024-06-18 23:22:43 2570

原创 android中常用绑核方式及其原理

android中应用进程可以在多个cpu上运行,当操作系统在cpu之间频繁切换应用时,可能会引起缓存失效、降低缓存命中率,导致cpu的使用效率下降。此外,手机soc芯片通常是大小核架构,相同的任务,大核的处理时间要小于小核的处理时间。因此,为了追求更好的性能表现,android中经常需要在某些时候把一些关键线程/进程绑定在某个或某些指定的cpu上运行,这种操作俗称“绑核”。

2024-05-19 22:48:07 5003

原创 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 4112 4

原创 探索Surface同步机制

Surface同步机制为android13新增,相关核心代码为SurfaceSyncer.java,主要作用为提供ViewRootImpl与SurfaceView(假如窗口存在SurfaceView的情况下)同步服务,实现在主Surface与SurfaceView均完成绘制时再去上报至WMS进行窗口状态的切换,避免主Surface绘制完成上报至WMS后、同时SurfaceView迟迟没有绘制完成使得startingWindow过早移除从而产生黑屏的现象。

2023-12-10 15:28:07 3381 2

原创 anr触发机制与处理流程

本文主要是针对窗口发生anr的情况进行梳理,其他情况诸如 Service、Broadcast等发生anr不在本文关注范围内。

2023-10-22 14:12:22 1292 1

原创 InputDispatcher中窗口列表的更新逻辑

本文主要介绍InputDispatcher中的窗口列表更新原理

2023-10-15 21:29:56 1778 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除