<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[learnframework的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/learnframework</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; learnframework]]></copyright><item><title><![CDATA[近期手机车机系统framework开发的20个经典面试（中上难度）]]></title><link>https://blog.csdn.net/learnframework/article/details/163130499</link><guid>https://blog.csdn.net/learnframework/article/details/163130499</guid><author>learnframework</author><pubDate>Thu, 23 Jul 2026 14:51:02 +0800</pubDate><description><![CDATA[12、请问你解决过壁纸闪黑问题，那么详细讲述一些壁纸显示的窗口原理和显示流程，与普通的WindowState ViewRootImpl这种有啥差别。有没有性能更加优秀方案。13、你的壁纸闪黑问题的解决方法中，是否有啥没有考虑的问题？]]></description><category></category></item><item><title><![CDATA[重大更新：Perfetto中分析bitmap内存泄漏可以看到png图片]]></title><link>https://blog.csdn.net/learnframework/article/details/163041169</link><guid>https://blog.csdn.net/learnframework/article/details/163041169</guid><author>learnframework</author><pubDate>Mon, 20 Jul 2026 17:43:19 +0800</pubDate><description><![CDATA[该行显示积累的内容：一个 128×128 资产的 12 个副本，都具有相同的内容哈希。平时的java内存泄露问题一般都是使用android studio + mat工具，在看Perfetto的内存泄露分析文档中看到一个bitmap泄漏内存分析的非常好的更新，这个更新就是分析bitmap内存泄露对象时候，可以可视化展示出具体哪张图片泄露，也就是会实时展示bitmap内容，而不是冷冰冰的bitmap对象。像素都哈希到相同的值，但它们是不同的 Bitmap 实例，具有不同的后备 byte[]。]]></description><category></category></item><item><title><![CDATA[Perfetto重大更新：一边分析trace一边看画面录屏结合功能]]></title><link>https://blog.csdn.net/learnframework/article/details/162987620</link><guid>https://blog.csdn.net/learnframework/article/details/162987620</guid><author>learnframework</author><pubDate>Mon, 20 Jul 2026 09:25:57 +0800</pubDate><description><![CDATA[大家在使用Perfetto分析相关trace时候，经常会分析SurfaceFlinger主线程每个vsync的相关slice，虽然也可以通过hwc的合成图层知道当前显示每一帧画面是啥，但是没有具体的与每一帧的画面的功能，大家都很希望可以在分析trace时候顺便有当前手机的运行画面可以结合起来看，类似winscope分析闪黑问题一样，这样就可以更加直观清晰分析一些卡顿显示等性能问题。]]></description><category></category></item><item><title><![CDATA[google官方Perfetto 中使用 AI相关skill]]></title><link>https://blog.csdn.net/learnframework/article/details/162869834</link><guid>https://blog.csdn.net/learnframework/article/details/162869834</guid><author>learnframework</author><pubDate>Tue, 14 Jul 2026 12:25:02 +0800</pubDate><description><![CDATA[在阅读Perfetto的官方文档时候发现有更新一个关于Perfetto使用ai分析的部分，这里把他进行转载分享一下。]]></description><category></category></item><item><title><![CDATA[Android Framework 新手学习踩坑建议指南]]></title><link>https://blog.csdn.net/learnframework/article/details/162831840</link><guid>https://blog.csdn.net/learnframework/article/details/162831840</guid><author>learnframework</author><pubDate>Mon, 13 Jul 2026 12:49:37 +0800</pubDate><description><![CDATA[framework的学习终极目标不是源码分析，而是进行安卓系统的需求定制和疑难问题的实战解决，但是源码分析属于需求和bug解决实现的最重要的理论基础。所以源码分析也是一样很重要，源码分析提供了理论基础后，更重要是利用这个理论基础再结合各种调试和分析工具等来帮助我们解决实际需求和问题。更多framework实战开发入门学习干货资料，请关注下面“千里马学框架”]]></description><category></category></item><item><title><![CDATA[小鹏车机竞品调研：车机分屏功能的竞品调研和实现方案]]></title><link>https://blog.csdn.net/learnframework/article/details/162756691</link><guid>https://blog.csdn.net/learnframework/article/details/162756691</guid><author>learnframework</author><pubDate>Fri, 10 Jul 2026 12:11:52 +0800</pubDate><description><![CDATA[可以看到上面的其实也是处于分屏模式，而且分割线在最右侧，左边分屏的区域也是相当于全屏展示着，这个其实和我们三分屏讲解的相关实现，可以把分割线拖动到最右侧，但是这个时候还不退出分屏。1、分屏模式下可以某个分屏task全屏显示，但是这个时候还是分屏模式，分割线显示在边界，可以拖动分割线，重新进入正常比例的分屏。整体难度不大，这里给大家布置小鹏车机分屏给你为学员作业，作业的目标就是实现类似小鹏车机的2个亮点功能既可以。整体调研小鹏车机的分屏功能后，其实整体难度不大，修改难度远比小米su7的三分屏难度要小一些。]]></description><category></category></item><item><title><![CDATA[性能优化比拼：app启动流程之冷热启动Activity的SnapshotWindow]]></title><link>https://blog.csdn.net/learnframework/article/details/162726516</link><guid>https://blog.csdn.net/learnframework/article/details/162726516</guid><author>learnframework</author><pubDate>Thu, 09 Jul 2026 15:33:25 +0800</pubDate><description><![CDATA[││ ││ └─ taskSwitch + snapshot → SNAPSHOT ← 温启动命中││││═══════ Snapshot 显示中，App 首帧正在绘制 ═══════││添加路径→→→ Binder →移除路径→→ Binder →更多fw实战干货请关注下面“千里马学框架”]]></description><category></category></item><item><title><![CDATA[AI替代一切工作？AI辅助学习Framework开发经验技巧分享]]></title><link>https://blog.csdn.net/learnframework/article/details/162658169</link><guid>https://blog.csdn.net/learnframework/article/details/162658169</guid><author>learnframework</author><pubDate>Tue, 07 Jul 2026 14:34:51 +0800</pubDate><description><![CDATA[AI本质让我们很多想法，懒着动手实现东西可以不需要花太多时间搞，让AI帮我们搞。变成不缺代码缺少想法时代。但是想法和思路又来自自己对于系统业务的熟悉精通程度，只有你精通熟悉你才可以有想法，本质ai变成干活工具，但是核心竞争力还是没有变化更多fw相关干货及实战开发资料获取，请关注下面：千里马学框架。]]></description><category></category></item><item><title><![CDATA[重重学app冷启动流程桌面点击到SplashWindow显示与移除流程剖析-aosp16]]></title><link>https://blog.csdn.net/learnframework/article/details/162628732</link><guid>https://blog.csdn.net/learnframework/article/details/162628732</guid><author>learnframework</author><pubDate>Mon, 06 Jul 2026 14:45:40 +0800</pubDate><description><![CDATA[Splash 创建：startSpecificActivity() → showStartingWindow() → getStartingWindowType() 返回 SPLASH_SCREEN→ SplashScreenStartingData → scheduleAddStartingWindow() → IPC → Shell 双线程并行渲染→ Splash 首帧显示 ✓。]]></description><category></category></item><item><title><![CDATA[安卓fw系统必知必会进程线程与性能监控命令详解]]></title><link>https://blog.csdn.net/learnframework/article/details/162546633</link><guid>https://blog.csdn.net/learnframework/article/details/162546633</guid><author>learnframework</author><pubDate>Fri, 03 Jul 2026 14:46:37 +0800</pubDate><description><![CDATA[proc 是 Android 系统中最重要的虚拟文件系统，它不占用实际磁盘空间，所有内容由内核在访问时动态生成。注意‌：在多核处理器上，多个进程的 CPU 使用率累加可能超过 100%，这是因为系统将各核心上的 CPU 使用率相加计算总使用率，属于正常现象。Android 系统调试时候，经常需要查看某个进程名字对应的可执行文件具体在哪个目录的需求，/proc 文件系统提供了完整的进程信息。每个运行中的进程在 /proc 下都有一个以 PID 命名的子目录，包含该进程的详细信息。]]></description><category></category></item><item><title><![CDATA[wms你会吗？一起来分析aosp原生窗口显示bug-vip学员作业]]></title><link>https://blog.csdn.net/learnframework/article/details/162483195</link><guid>https://blog.csdn.net/learnframework/article/details/162483195</guid><author>learnframework</author><pubDate>Wed, 01 Jul 2026 15:33:21 +0800</pubDate><description><![CDATA[后，正常课程中的10几个实战项目案例学会后，一般都具备了较强的实战能力，有的学员们希望马哥搞一些非课程的案例问题进行实战，想检测自己的实战解决问题能力如何。其实重叠还不是问题本质哈，主要是重叠显示的停留时间有点长，具体看这个窗口显示问题的bug情况。录屏看的话大家可能会觉得看不出啥问题，只看到一闪，因为本身问题可能就持续100ms左右，但是确实是会给出很不好的重影体验。5、给出相关的问题修复方案，这里有的学员可能一开始就说直接关闭动画暴力解决，但是如果不能关闭动画呢如何解决？1、开启设置中的开发者选项。]]></description><category></category></item><item><title><![CDATA[新版负一屏变天了！分享pixel新桌面负一屏技术调研报告]]></title><link>https://blog.csdn.net/learnframework/article/details/162445716</link><guid>https://blog.csdn.net/learnframework/article/details/162445716</guid><author>learnframework</author><pubDate>Tue, 30 Jun 2026 15:23:44 +0800</pubDate><description><![CDATA[Pixel Launcher 的负一屏不是在 Launcher 进程内嵌入一个 View 或 Fragment，而是利用 Android 12+ 的，在 Launcher 的 Task 内创建一个独立的，将 Google App (Velvet) 的以模式嵌入其中。两个 Activity 拥有各自独立的 Window 和 Surface偏移目标机制层级View 层负一屏 (MinusOneActivity)Surface 层。]]></description><category></category></item><item><title><![CDATA[Android 系统 APK 分区存放剖析-你的apk应该放在哪里？]]></title><link>https://blog.csdn.net/learnframework/article/details/162414763</link><guid>https://blog.csdn.net/learnframework/article/details/162414763</guid><author>learnframework</author><pubDate>Mon, 29 Jun 2026 14:26:46 +0800</pubDate><description><![CDATA[在 Android 系统中，APK 的存放路径远不止 /system/app 这一个。从 Android 早期到现在，随着系统架构的演进（尤其是 Project Treble 之后），APK 的存放路径被划分成了多个不同的分区目录。不同分区的 APK 在等方面都有本质区别。本文基于 AOSP 15 源码设备的实际编译产物，对 Android 系统中所有 APK 存放路径做一个完整的梳理和对比。]]></description><category></category></item><item><title><![CDATA[深入剖析Perfetto性能优化之睡眠sleep的几个状态]]></title><link>https://blog.csdn.net/learnframework/article/details/162228559</link><guid>https://blog.csdn.net/learnframework/article/details/162228559</guid><author>learnframework</author><pubDate>Thu, 25 Jun 2026 12:50:51 +0800</pubDate><description><![CDATA[一、D (IO) — 不可中断 I/O 等待内核路径：io_schedule() → in_iowait = 1触发条件是同步等待磁盘/存储完成读写。经典场景：二、D (non-IO) — 不可中断非 I/O 等待内核路径：mutex_lock() / wait_event() → schedule() → in_iowait = 0本质是等内核同步对象（mutex、waitqueue for non-IO condition）。]]></description><category></category></item><item><title><![CDATA[fw面试折叠屏不会？一起来调研荣耀手机折叠屏原理]]></title><link>https://blog.csdn.net/learnframework/article/details/162268403</link><guid>https://blog.csdn.net/learnframework/article/details/162268403</guid><author>learnframework</author><pubDate>Wed, 24 Jun 2026 14:59:09 +0800</pubDate><description><![CDATA[硬件层面：两块独立的物理面板（port=147 和 port=148）逻辑层面：Display ID 0/1 是固定编号，窗口和应用挂在逻辑 Display 上不动切换本质：物理面板在两个逻辑 Display 之间"交换"，每次只有一个被设为 enabled活跃的标志不活跃的标志控制源头中的enabled属性 →→ 设置 layerStack + 开关设备App 感知：通过收到新的屏幕尺寸/density/挖孔信息，触发重绘。]]></description><category></category></item><item><title><![CDATA[性能优化实战：Perfetto/Systrace实战线程状态部分分析]]></title><link>https://blog.csdn.net/learnframework/article/details/162229395</link><guid>https://blog.csdn.net/learnframework/article/details/162229395</guid><author>learnframework</author><pubDate>Tue, 23 Jun 2026 12:18:30 +0800</pubDate><description><![CDATA[从桌面应用的UI线程从Sleeping状态切换到Runnable状态的Tag信息中可以看到该线程是被一个tid为2796的线程所唤醒，然后我们在Systrace界面右上角的搜索框中输入 2796后，搜索发现该线程的详细信息是属于框架system_server进程中的名为InputDispatcher的工作线程。从Runnable 到Running状态的切换，Systrace上会显示出唤醒这个线程的线程号，从而可以进一步根据该线索分析理清楚线程间的相互等待唤醒关系，找到问题的根本原因。或者是等锁释放阻塞？]]></description><category></category></item><item><title><![CDATA[安卓实体机系统上kernel调试log，trace开发的技巧汇总]]></title><link>https://blog.csdn.net/learnframework/article/details/162177966</link><guid>https://blog.csdn.net/learnframework/article/details/162177966</guid><author>learnframework</author><pubDate>Mon, 22 Jun 2026 08:33:44 +0800</pubDate><description><![CDATA[1、#include相关的头文件 <trace/events/input.h>实际上最后也是调用trace_tracing_mark_write。// 2. pr_xxx 宏 (不需要 dev，自动加模块名)// 3. dev_xxx (需要 dev)// 1. 直接用 printk。可以看看下面是power键案例。重启进入fastboot模式。刷入对应的boot.img。]]></description><category></category></item><item><title><![CDATA[安卓手机车机系统开发面试福利：一线手机车载系统开发相关面试题]]></title><link>https://blog.csdn.net/learnframework/article/details/162121071</link><guid>https://blog.csdn.net/learnframework/article/details/162121071</guid><author>learnframework</author><pubDate>Fri, 19 Jun 2026 12:24:34 +0800</pubDate><description><![CDATA[14.多屏互动项目中，窗口移动到副屏后，有没有考虑音频焦点的管理，比如继续维持主屏扬声器发声还是副屏扬声器发声？一般你只要跟着马哥认真学了课程，这些题目其实都不是什么大问题哈，当然有一些题目也确实有一定难度哈。有没有性能更加优秀方案。]]></description><category></category></item><item><title><![CDATA[体验Perfetto高级知识之command自动化配置相关]]></title><link>https://blog.csdn.net/learnframework/article/details/162025811</link><guid>https://blog.csdn.net/learnframework/article/details/162025811</guid><author>learnframework</author><pubDate>Tue, 16 Jun 2026 11:29:06 +0800</pubDate><description><![CDATA[如果你的查询使用 Perfetto 模块（例如，android.screen_state、android.memory.lmk），你必须首先执行带有模块 include 语句的 RunQuery 命令，然后才能创建 debug track。那么有没有Perfetto可以自动化根据我们配置的置顶的Track初始化就帮我们置顶好相关的Track呢？发现Perfetto的UI显示异常，完全看不见完整InputDispatcher的内容，只看到一个空白的InputDispatcher的trace。]]></description><category></category></item><item><title><![CDATA[手机大厂桌面负一屏 Overlay 触摸事件冲突修复笔记]]></title><link>https://blog.csdn.net/learnframework/article/details/161974449</link><guid>https://blog.csdn.net/learnframework/article/details/161974449</guid><author>learnframework</author><pubDate>Sun, 14 Jun 2026 13:10:01 +0800</pubDate><description><![CDATA[可以看出触摸相关智能卡片的控件时候，只要是整体上有滑动情况下负一屏的Overlay窗口还是会整体进行滑动，而不会因为事件被控件吃掉后，导致整体卡片无法滑动情况。内容这些布局都比较简单，但是发现控件多了后，遇到滑动事件冲突的相关严重问题，导致页面丰富后负一屏和桌面的滑动基本上无法按照预想的方式进行滑动。但是负一屏的内容部分还没有做的丰富，只是一个简单的TextView展示，而且滑动事件也没有任何事件冲突等问题。：手指在这些控件上左滑时，触摸事件被控件消费，overlay 无法收到滑动事件，导致。]]></description><category></category></item></channel></rss>