opoojkk

Coding 74

理解 Kotlin Flow:冷热流与背压处理

Kotlin 编译器插件(译)

Kotlin 协程:Job 与 SupervisorJob 的差异

Paging3核心解析:Kotlin Flow 如何实现内存与数据双高效

深入 Compose:从 setContent 到 LayoutNode 绘制原理

Jetpack DataStore:Android应用中的现代数据存储方法

Protocol Buffers编码原理

重新理解Android事件分发机制

WorkManager是怎样工作的

Android中的View加载是怎样执行的

Kotlin泛型和reified

flutter渲染和布局

Fragment的故事

AI入门指南:从零开始理解人工智能

LeakCanary检测到内存泄漏之后发生了什么

Google Play 企业开发者账号注册踩坑记录

Kotlin的枚举、密封类和密封接口

单例模式设计对比分析

发布android库到Maven Central

Fragment重建过程详解

Kotlin的fun interface

协变与逆变解析

LiveData与StateFlow对比分析

协程与Kotlin协程对比

WebView JavaScript接口实现原理

理解Android插件化

Android序列化方案对比

DialogFragment取消机制解析

Android代码混淆

理解View焦点机制

ADB SERVICES

ADB README

ADB OVERVIEW

解决系统界面高度变化——WindowInsets

View中避免使用Context参数

Ubuntu环境AOSP编译指南

理解Kotlin协程

Jetpack ViewModel实现原理

Jetpack Lifecycle组件解析

Jetpack LiveData解析

理解Android屏幕适配和最小宽度

Material Design吸顶效果实现

Material Design滚动变色效果实现

验证suspend all threads

COW与HProf文件格式分析

删除.gitignore中的文件

Android扩大点击区域

Android快捷方式开发指南

Android FFmpeg编译实战

面向过程和面向对象

TextView setText发生了什么?

WeakReference解决内存泄漏

gravity和layout_gravity

破解Android绘制常见误区

Android资源匹配规则详解

Zip File Format

浅谈Service

关于OTP、HOTP和TOTP

OkHttp源码解析之旅

判断Activity和Fragment状态的方式

Android HTTPS抓包原理

Android快捷方式开发

Android中常见的尺寸单位

透明状态栏和透明导航栏

VPN代理模式:TUN与TAP对比

Toast异常:BadTokenException

使用SpannableStringBuilder注意事项

你需要知道的inlcude标签属性

SharedPreferences源码深度解析

Android library模块publish到JitPack完成流程

Android Studio代理配置指南

Linux文件系统权限管理

Gradle显示任务面板技巧

RecyclerView.shouldIgnore() NPE问题排查日记