<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[allk55的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/allk55</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; allk55]]></copyright><item><title><![CDATA[ RxJava 深度解构：从上帝视角看响应式编程的“道”与“术”]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/156419907</link><guid>https://blog.youkuaiyun.com/allk55/article/details/156419907</guid><author>allk55</author><pubDate>Tue, 30 Dec 2025 12:07:27 +0800</pubDate><description><![CDATA[RxJava 是一把屠龙刀。用好了削铁如泥，用不好容易伤到自己。]]></description><category></category></item><item><title><![CDATA[Android APK 极限瘦身：从构建链优化到架构演进 ]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/156393269</link><guid>https://blog.youkuaiyun.com/allk55/article/details/156393269</guid><author>allk55</author><pubDate>Mon, 29 Dec 2025 18:13:32 +0800</pubDate><description><![CDATA[APK 瘦身不是一蹴而就的，而是一套组合拳。构建层(语言包剔除)。兜底层：配置 res/raw/keep.xml，防止反射资源误删，强杀第三方库无用资源。代码层：用 @IntDef替换所有枚举。架构层：ABI 分包 (splits) 或 AAB 动态分发。将Lint 检查（Unused Resources）集成到 CI 流水线中，让包体积治理常态化，才是大厂应用保持轻盈的秘诀。]]></description><category></category></item><item><title><![CDATA[Android 性能优化深水区：电量与网络架构演进 ]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/156151853</link><guid>https://blog.youkuaiyun.com/allk55/article/details/156151853</guid><author>allk55</author><pubDate>Mon, 22 Dec 2025 15:33:41 +0800</pubDate><description><![CDATA[尽管系统管控严格，但对于即时通讯、VoIP 等需要持续保活的应用，Android 提供了一份白名单机制。特权：加入白名单的应用在 Doze 模式下可以使用网络并持有部分 WakeLock。代码实现Java// 检查是否已经在白名单中if (!// 方案A：跳转到列表页让用户自己找（合规推荐）// 方案B：直接弹窗申请（需权限，Google Play 慎用）我们需要继承Worker(或 Kotlin 的) 并重写doWork()方法。这是执行后台任务的地方。Java。]]></description><category></category></item><item><title><![CDATA[Android 屏幕适配全维深度解析]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/156059906</link><guid>https://blog.youkuaiyun.com/allk55/article/details/156059906</guid><author>allk55</author><pubDate>Thu, 18 Dec 2025 17:37:16 +0800</pubDate><description><![CDATA[X2C是由掌阅科技 (iReader)开源的一个 Android 布局加载优化框架。它的核心目的是解决 XML 布局加载慢的问题，通过在编译期将 XML 布局文件翻译成 Java 代码，从而在运行时省去 XML 解析（IO 操作）和反射创建 View 的开销。]]></description><category></category></item><item><title><![CDATA[Android ANR 深度起底：从系统埋雷机制到全链路治理体系]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/156028059</link><guid>https://blog.youkuaiyun.com/allk55/article/details/156028059</guid><author>allk55</author><pubDate>Wed, 17 Dec 2025 22:06:42 +0800</pubDate><description><![CDATA[减少负载：主线程只做 UI 操作，重活儿全部下放。警惕 IO：不仅是网络和数据库，SP 的apply()也是潜伏的杀手。监控闭环：通过 WatchDog 抓取线上真实案例，结合traces文件深挖锁竞争和进程间通信瓶颈。]]></description><category></category></item><item><title><![CDATA[Android 渲染性能优化实战总结：从监控体系到架构落地]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/156009798</link><guid>https://blog.youkuaiyun.com/allk55/article/details/156009798</guid><author>allk55</author><pubDate>Wed, 17 Dec 2025 13:05:16 +0800</pubDate><description><![CDATA[在 Android 开发中，流畅度是用户体验的核心指标。业界公认的流畅标准是，这意味着系统必须在内完成一帧的全部计算与绘制。一旦主线程耗时过长，导致无法在 VSync 信号到来前提交数据，就会发生，用户感知的直接后果就是卡顿。本文总结了一套从底层监控到上层架构的渲染优化方案，涵盖了 Systrace 分析、Choreographer 实时监控、布局层级优化以及 ViewPager2 懒加载实战。]]></description><category></category></item><item><title><![CDATA[Android 性能优化之启动加速：从底层原理到架构治理]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/155916928</link><guid>https://blog.youkuaiyun.com/allk55/article/details/155916928</guid><author>allk55</author><pubDate>Sun, 14 Dec 2025 20:42:32 +0800</pubDate><description><![CDATA[利用解决白屏，提升第一眼体验。严控主线程耗时，非必须的初始化通通往后推。减少层级，降低渲染压力。在启动优化中，我们经常面临一个死结：有些任务（比如初始化某些依赖 View 的 SDK、预加载下一页数据）必须在主线程执行，不能扔到子线程。但如果直接在onCreate或onResume里执行，就会抢占 CPU，导致首屏渲染变慢。IdleHandler 就是用来打破这个死结的。“IdleHandler 并不是用来替代子线程的。凡是能去子线程的任务，首选依然是子线程。]]></description><category></category></item><item><title><![CDATA[Android 性能优化之数据结构：Java 集合与 Android 特有容器的深度博弈]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/153677302</link><guid>https://blog.youkuaiyun.com/allk55/article/details/153677302</guid><author>allk55</author><pubDate>Tue, 21 Oct 2025 09:15:59 +0800</pubDate><description><![CDATA[在Android开发中，集合类的选择直接影响应用的性能和内存使用。本文将从底层实现机制出发，深入分析ArrayList、LinkedList、HashMap、SparseArray和ArrayMap的内部原理，帮助开发者做出最优的选择。2的幂次方长度- 使用位运算替代取模运算- 性能提升：位运算比除法快10倍以上- 确保所有索引都能被均匀使用负载因子0.75- 基于泊松分布理论的最优值- 平衡空间利用率和查找性能。]]></description><category></category></item><item><title><![CDATA[OkHttp源码解析(二)]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/153261334</link><guid>https://blog.youkuaiyun.com/allk55/article/details/153261334</guid><author>allk55</author><pubDate>Tue, 14 Oct 2025 15:07:23 +0800</pubDate><description><![CDATA[两个异常都是根据recover方法判断是否能够进行重试，如果返回true，则表示允许重试。1，如果是那么直接判定不能重试;（你的请求或者服务器的响应本身就存在问题，没有按照http协议来 定义数据，再重试也没用）2，可能由于网络波动造成了Socket连接的超时，可以使用不同路线重试。3，前者是证书验证失败，后者可能就是压根就没证书，或者证书数据不正确， 那还怎么重试？经过了异常的判定之后，如果仍然允许进行重试，就会再检查当前有没有可用路由路线来进行连接。]]></description><category></category></item><item><title><![CDATA[OkHttp源码解析（一）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/153209546</link><guid>https://blog.youkuaiyun.com/allk55/article/details/153209546</guid><author>allk55</author><pubDate>Mon, 13 Oct 2025 20:44:27 +0800</pubDate><description><![CDATA[这种模式给予请求的类型，对请求的发送者和接收者进行解耦。在这种模式 中，通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求，那么它会把相同的请求传给下 一个接收者，依此类推。前面我们提过，分发器就是来调配请求任务的，内部会包含一个线程池。当异步请求时，会将请求任务交给线程池 来执行。那分发器中默认的线程池是如何定义的呢？中进行，在进入这个方法分析之前，我们先来了 解什么是责任链模式，因为此方法就是利用的责任链模式完成一步步的请求。请求会被交给责任链中的一个个拦截器。]]></description><category></category></item><item><title><![CDATA[PKMS核心分析（一）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/152737746</link><guid>https://blog.youkuaiyun.com/allk55/article/details/152737746</guid><author>allk55</author><pubDate>Wed, 08 Oct 2025 22:19:41 +0800</pubDate><description><![CDATA[服务，也就是安装器，随后判断当前的设备是否处于加密状态，如果是则只是解析核心应用，接着调用。管理本地应用，主要有， 安装，卸载，应用信息查询 等。清单文件，解析清单文件中的所有节点信息。文件，安装系统应用，安装本地应用等。如果设备没有加密，操作它。启用部分应用服务于多用户场景。，如果设备加密了，则只解析。优化，磁盘管理功能，让。]]></description><category></category></item><item><title><![CDATA[ AMS核心分析（二）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/152517843</link><guid>https://blog.youkuaiyun.com/allk55/article/details/152517843</guid><author>allk55</author><pubDate>Sat, 04 Oct 2025 22:44:44 +0800</pubDate><description><![CDATA[Instrumentation是Android系统中的一个核心组件，它提供了对Activity和Application生命周期的监控和控制能力。它允许开发者在不修改应用代码的情况下，监控、测试和调试应用程序// Instrumentation的基本定义// 监控Activity生命周期// 监控Application生命周期。]]></description><category></category></item><item><title><![CDATA[AMS核心分析（一）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/152445723</link><guid>https://blog.youkuaiyun.com/allk55/article/details/152445723</guid><author>allk55</author><pubDate>Fri, 03 Oct 2025 12:12:58 +0800</pubDate><description><![CDATA[反射创建：通过反射机制创建Lifecycle类实例生命周期管理：Lifecycle类管理AMS的完整生命周期解耦设计：通过反射实现服务创建的解耦统一管理：所有系统服务都通过相同的反射机制创建依赖注入：在创建过程中注入必要的依赖。]]></description><category></category></item><item><title><![CDATA[Android 底层风暴：Dex 文件格式详解与增量更新原理]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/152365091</link><guid>https://blog.youkuaiyun.com/allk55/article/details/152365091</guid><author>allk55</author><pubDate>Wed, 01 Oct 2025 14:15:48 +0800</pubDate><description><![CDATA[增量更新（Incremental Update）是一种软件更新策略，只下载和安装应用程序的变更部分，而不是整个应用程序。这种方法可以显著减少下载时间和数据使用量。bsdiff（Binary diff）是一种高效的二进制差异算法，专门用于生成两个二进制文件之间的差异补丁。它基于后缀数组和最长公共子序列算法，能够生成最小的差异补丁。]]></description><category></category></item><item><title><![CDATA[Android系统启动]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/152259384</link><guid>https://blog.youkuaiyun.com/allk55/article/details/152259384</guid><author>allk55</author><pubDate>Mon, 29 Sep 2025 16:07:28 +0800</pubDate><description><![CDATA[1. Linux内核启动后，启动init进程init进程启动# 2. init进程读取init.rc配置文件init.rc配置文件中定义了Zygote的启动# 3. init进程启动Zygoteinit进程 → 启动Zygote进程# 4. Zygote启动SystemServerZygote进程 → fork出SystemServer进程# 5. Zygote fork应用进程Zygote进程 → fork出应用进程。]]></description><category></category></item><item><title><![CDATA[进程间通信机制Binder源码详解（三）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/152215356</link><guid>https://blog.youkuaiyun.com/allk55/article/details/152215356</guid><author>allk55</author><pubDate>Sun, 28 Sep 2025 14:06:42 +0800</pubDate><description><![CDATA[-- 函数指针 --- svcmgr_handler作用：获取或者添加 service。-- 给SM --- 被挂起。- 1.writeTransactionData --- out 写入命令 --write  --- cmd == BC_TRANSACTION。- BINDER_WORK_TRANSACTION --- 要处理 cmd == BR_TRANSACTION。- talkWithDriver -- 非常重要 --- 代码非常长。- wait_event_freezable --- 挂起。]]></description><category></category></item><item><title><![CDATA[进程间通信机制Binder源码详解（二）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/152123395</link><guid>https://blog.youkuaiyun.com/allk55/article/details/152123395</guid><author>allk55</author><pubDate>Sat, 27 Sep 2025 12:12:42 +0800</pubDate><description><![CDATA[函数，通过搜索代码，你会发现根本找不到这个方法是在哪里定义这个函数的。表示目标对象的生命周期受弱指针控制。文件而创建的，其所对应的可执行程序。读数据，没有数据会进入休眠状态。单例模式，如果不为空直接返回。秒后，循环尝试获取直到成功。可能未准备就绪，这时通过。驱动，能支持的最大线程数。是否有效，当前是无效的。通过模板函数来定义的。驱动，得到文件描述符。准备就绪的线程个数加。不存在或弱引用无效时。]]></description><category></category></item><item><title><![CDATA[进程间通信机制Binder源码详解（一）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/152075304</link><guid>https://blog.youkuaiyun.com/allk55/article/details/152075304</guid><author>allk55</author><pubDate>Thu, 25 Sep 2025 21:40:22 +0800</pubDate><description><![CDATA[Binder是Android系统中用于进程间通信(IPC)的核心机制，它允许不同进程之间安全地交换数据和调用方法。- 进程间通信机制- 也是一个驱动- Binder.java --> 实现 Ibinder  --- 跨进程的能力自己创建的进程：webVIew  视频播放、音乐、大图浏览、推送、系统服务：打电话，闹钟等等线程共享区域  --- 麻烦 -- 同步身份识别  --- PID 多少 --- 不靠谱系统分配 UID  --- 更安全 -- linux  ---组id  用户id。]]></description><category></category></item><item><title><![CDATA[Handler源码解析（二）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/151954821</link><guid>https://blog.youkuaiyun.com/allk55/article/details/151954821</guid><author>allk55</author><pubDate>Mon, 22 Sep 2025 10:54:47 +0800</pubDate><description><![CDATA[同步屏障是Android消息机制中的一种特殊机制，用于临时阻止同步消息的处理，优先处理异步消息。它就像一个"屏障"，阻挡同步消息通过，让异步消息能够优先执行。]]></description><category></category></item><item><title><![CDATA[Handler源码解析（一）]]></title><link>https://blog.youkuaiyun.com/allk55/article/details/151587532</link><guid>https://blog.youkuaiyun.com/allk55/article/details/151587532</guid><author>allk55</author><pubDate>Thu, 11 Sep 2025 22:40:54 +0800</pubDate><description><![CDATA[跟web开发的ajax有异曲同工之妙使得Android开发难度大大降低几乎看不到多线程死锁问题。]]></description><category></category></item></channel></rss>