
framework
文章平均质量分 79
亚瑟-小郎
那些闪亮的人,不是因为盛气凌人争来的,请你足够相信,他付出比你多得多!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
framework 编译技巧
android 根目录编译:make api-stubs-docs-non-updatable-update-current-api。会自动更新frameworks/base/api/current.txt或non-updatable-api/current.txt文件。mona项目在non-updatable-api更新api。其它项目更新成non-updatable-api更新api。android root目录,//framework推包。原创 2025-05-22 22:41:55 · 360 阅读 · 0 评论 -
SurfaceFlinger MessageQueue原理
执行,调用公共方法SurfaceFlinger::schedule(mEventQueue->postMessage(std::move(task)));是SurfaceFlinger构造函数创建的1个消息队列(但不是android的。SurfaceFlinger目录下自定义的一个,但是内部也用了是android的。,用于SurfaceFlinger和HWC之间跨进程通讯。SurfaceFlinger是生产者,HWC是消费者。SurfaceFlinger生产message方式。例如:app有图像请求渲染。原创 2025-01-09 19:11:42 · 228 阅读 · 0 评论 -
App申请Surface流程(Android12 )
从SurfaceFlinger申请surface原创 2025-01-06 20:53:36 · 182 阅读 · 0 评论 -
App 创建window流程(android12 )
从wms.createSurfaceLocked ~ SurfaceFlinger::createLayer如图所示。原创 2025-01-04 21:48:37 · 1162 阅读 · 0 评论 -
CarWatchdog
作用:监控进程是否有心跳,如果没有心跳就kill掉了,比如Hal层管理进程注册了一个客户端listener。原创 2024-12-20 17:20:15 · 299 阅读 · 0 评论 -
Binder学习总结
#Binder导致crash#kill crash原因分析-CSDN博客#Binder风暴导致binder失败#E IPCThreadState: Process seems to be sending too many oneway calls.E JavaBinder: !!! FAILED BINDER TRANSACTION !!!(当前进程发送的oneway binder调用太多,binder线程快不够用了,紧接着马上要binder fail了)源码如下:defaultS原创 2024-12-11 22:47:06 · 453 阅读 · 0 评论 -
SyncBarrier同步屏障Detector
SyncBarrier是一条同步Message,msg.target==null,目的是为了过滤掉同步message,优先让一步message执行。原创 2024-12-16 19:02:30 · 942 阅读 · 0 评论 -
SurfaceFlinger layers合成学习笔记
不支持device合成的layer,SurfaceFlinger会采用GPU来合成,然后与device合成的layer在hwc进行同步再送给屏幕。规则3:如果多个窗口合成layer,z-order序列上下是device,中间是gpu,只能通过gpu合成。规则1:一个pipeline可合成屏幕宽度是6480,全屏6480至少要2个物理pipeline。规则2:gpu合成也是用2个物理pipeline。HWC(Device)合成的源码分析。原创 2024-12-14 23:33:16 · 364 阅读 · 0 评论 -
surface 相关
Surface里面包含1个SurfaceTexture,SurfaceTexture是Surface 和 GLES纹理的组合体,提供了将画面像素输出到 GLES 纹理的接口,源码在android.graphics.SurfaceTexture。Unity等Opengl绘制引擎会将 GLES 纹理使用gpu绘制好之后交给Surfaceflinger合成上屏。原创 2024-12-12 17:09:20 · 800 阅读 · 0 评论 -
进程保活机制
进程优先级(adj:-800)仅次于system_server(adj:-900)和native进程(adj:-1000),基本不存在被杀可能。实际用法如下所示:Entering GarageMode之后开始执行JobScheduler任务。Backgorud Service+闹钟。该方案适用于后台音乐播放的场景。原创 2024-12-14 00:14:12 · 499 阅读 · 0 评论 -
Android Freezer
Android按照优先级将一般的APP从高到低分为:。Freezer通过冻住cached进程,来迫使这些进程让出CPU,以达到优化系统资源使用的目的。Cached进程是怎么判定的呢?由于android的进程的adj是会根据不同的运行状态,会动态计算的。当adj大于等于CACHED_APP_MIN_ADJ(900)整个流程是比较清晰的,在fwk的系统服务中,会计算ADJ的变化,当满足条件后就会调用cgroup hal提供的freeze的接口,设置crashed进程的状态为freeze。原创 2024-12-12 18:43:36 · 1140 阅读 · 0 评论 -
View绘制上屏流程
producer和consumer在App进程,dequeue,queue,acquire,release Buffer 操作均在App端实现,从下图看出生产者与消费者通过交换buffer(Graphic Buffers)原创 2024-12-12 16:51:15 · 1102 阅读 · 0 评论