Performance Articles
Speeding Up Android WebView: Resource Interception and Offline Package Caching in Practice
A practical walkthrough of using shouldInterceptRequest to serve WebView resources from a local offline package, cutting first-paint time from 2.8s to 0.6s.
Read Post
Android System Properties End-to-End: From init to Shared Memory and SELinux
How Android's system property mechanism works: property files, the init property service, zero-copy shared memory reads, SELinux enforcement, and cross-process change notifications.
Read Post
Android Concurrency in Practice: Thread Pools, Queues, and Coroutine Dispatchers
A practical guide to Android thread pool tuning, queue selection, rejection policies, and how Kotlin coroutine dispatchers map onto underlying thread pools.
Read Post
Inside the Compose Compiler Plugin: From @Composable to Synthetic Parameters
How the Compose Compiler Plugin transforms @Composable functions at the IR level, covering $changed bitmasks, skip logic generation, state read/write markers, and stability inference rules.
Read Post
Inside MMKV: How mmap and Append-Only Protobuf Beat SharedPreferences
A practical walkthrough of MMKV's mmap memory mapping and append-only Protobuf writes, why SharedPreferences blocks the main thread, and how to choose between SP, MMKV, and DataStore.
Read Post
Inside Android Matrix: A Production-Grade APM Framework Walkthrough
How Matrix intercepts main-thread stalls with Looper Printer sampling, catches hidden I/O via PLT Hook, and what to copy when building your own APM.
Read Post
Android Studio Profiler in Practice: CPU Tracing to Memory Allocation Diagnostics
A practical guide to the full Android Studio Profiler toolkit, covering CPU sampling vs. instrumentation, flame graph reading, memory allocation tracking, heap dump diffing, and layered diagnosis with Systrace and Perfetto.
Read Post
Building a Custom RecyclerView LayoutManager: Layout, Caching, Scroll, and Animation
An end-to-end guide to writing a custom RecyclerView LayoutManager: the Fill algorithm, three-tier cache, scroll state machine, dead-reckoning, and animation tradeoffs.
Read Post
Inside Android Resource Loading: From resources.arsc Binary to Runtime Lookup
A walkthrough of Android's resource system from AAPT2 compilation to AssetManager2 runtime matching, covering the arsc binary structure, config scoring, and two-tier caching.
Read Post
Inside Jetpack Compose List Animations: From animateItem to Declarative Choreography
A practical walkthrough of animateItem internals, key stability, recomposition scoping, and frame-rate tuning for LazyColumn.
Read Post
Android On-Device AI Inference Warmup: From Model Loading to First-Token Latency
A practical breakdown of on-device AI cold-start latency: model loading, GPU Delegate initialization, KV cache prefill, warmup inference, long-lived contexts, and memory tradeoffs.
Read Post
RecyclerView DiffUtil: Myers Diff, Payloads, and AsyncListDiffer
A practical look at RecyclerView DiffUtil, from Myers shortest edit scripts to payload updates, AsyncListDiffer background computation, callback timing, and cache-friendly list updates.
Read Post
Android Emulator Performance: QEMU, Hypervisors, GPU, and Snapshots
A full-stack look at Android Emulator performance, from QEMU and KVM acceleration to GPU rendering, virtio-gpu, snapshots, and measurable tuning strategies.
Read Post
Android 16 Live Updates: Real-Time Notifications and Capsule UI
How Android 16 Live Updates separate notification structure from state changes, using segmented progress and incremental synchronization to reduce IPC cost and support persistent status-bar capsules.
Read Post
What Does AudioFlinger Do in the Android Audio System?
Explains AudioFlinger's role in the Android audio pipeline, including mixing, threads, AudioTrack, low-latency playback, and AAudio.
Read Post
Why Bitmap Causes OOM on Android: A Practical Guide to Image Memory
Explains Bitmap memory usage, Java heap vs. native heap, Hardware Bitmap, sampling, compression, and image loading optimization.
Read Post
Getting Started with Android Perfetto
A beginner-friendly Android Perfetto workflow covering trace capture, key tracks, Binder, scheduling, rendering, and startup analysis.
Read Post
Why Does Compose Recompose So Often? From Stability to State Read Placement
A practical guide to frequent Jetpack Compose recomposition, including unstable parameters, where state is read, derivedStateOf misuse, and list item design.
Read Post
When Should You Use Paging 3 RemoteMediator?
Explains where Paging 3 RemoteMediator fits, how network and database pagination cooperate, cache-first lists, and common misuse cases.
Read Post
Android Macrobenchmark: The Full Performance Benchmarking Workflow
A practical Macrobenchmark workflow for cold-start measurement, frame smoothness, custom trace metrics, and CI regression gates.
Read Post