📄🦌🙌🐟🏖️
ccc2
探 索 星 辰 大 海
Coil 和 Glide 的加载性能对比数据

Coil 和 Glide 的加载性能对比数据

Coil 和 Glide 的加载性能对比数据 Coil 和 Glide 的加载性能对比数据 去年把一个新项目从 Glide 4.15.1 迁到 Coil 2.4.0 之后,我遇到过一个很诡异的性能回归。首页是一个三列的 RecyclerView,每个 item 带一张圆角网络图片,快速滑动时 GPU

ConcurrentLinkedQueue 的无锁队列,适合什么场景

ConcurrentLinkedQueue 的无锁队列,适合什么场景

ConcurrentLinkedQueue 的无锁队列,适合什么场景 「ConcurrentLinkedQueue 的无锁队列,适合什么场景」 去年在优化一个相机预览模块的帧缓冲区时,我把原来的 LinkedBlockingQueue 换成了 ConcurrentLinkedQueue。当时的想法很

Shizuku 权限方案,无 Root 调用系统 API 的实践

Shizuku 权限方案,无 Root 调用系统 API 的实践

Shizuku 权限方案,无 Root 调用系统 API 的实践 「Shizuku 权限方案,无 Root 调用系统 API 的实践」 Android 14 上,我尝试在应用内直接通过反射关闭另一个应用的通知权限。代码刚跑起来就收到了一个无情的 SecurityException,日志很直白:uid

KtLint 和 Detekt 的代码规范配置

KtLint 和 Detekt 的代码规范配置

KtLint 和 Detekt 的代码规范配置 KtLint 和 Detekt 的代码规范配置:一个"过度配置"项目的踩坑记录 上个月把项目从 AGP 7.4 迁到 8.2,Gradle 升到 8.5,顺手把 KtLint 从 0.49.1 更新到 1.1.1。本地 ./gradlew spotle

DocumentsContract 的树形文档访问,SAF 的局限

DocumentsContract 的树形文档访问,SAF 的局限

DocumentsContract 的树形文档访问,SAF 的局限 「DocumentsContract 的树形文档访问,SAF 的局限」 去年把文件管理模块重构到纯 SAF(Storage Access Framework)方案时,我在 Android 11 的测试机上遇到一个极其诡异的权限崩溃。

Macrobenchmark 测出来的启动时间,跟真实用户差多少

Macrobenchmark 测出来的启动时间,跟真实用户差多少

Macrobenchmark 测出来的启动时间,跟真实用户差多少 「Macrobenchmark 测出来的启动时间,跟真实用户差多少」 去年做完一轮启动优化,本地跑 Macrobenchmark 的数据看起来相当漂亮。StartupTimingMetric 测出来的 timeToInitialDis