Performance Articles

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.

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.

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.

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.

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.

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.

Getting Started with Android Perfetto

A beginner-friendly Android Perfetto workflow covering trace capture, key tracks, Binder, scheduling, rendering, and startup analysis.

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.

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.

Android Macrobenchmark: The Full Performance Benchmarking Workflow

A practical Macrobenchmark workflow for cold-start measurement, frame smoothness, custom trace metrics, and CI regression gates.

Android StrictMode: From BlockGuard Hooks to CI Quality Gates

How to turn Android StrictMode from a debug helper into a CI quality gate, with BlockGuard internals, structured JSON output, and production soft interception.

Android MediaCodec Video Pipeline: MediaExtractor, Buffers, and Hardware Encoding

Trace Android video transcoding from MediaExtractor demuxing to MediaCodec async buffers, hardware decode compatibility, and MediaMuxer output.

Android ContentProvider IPC: URI Routing, Cursor Windows, and ContentObserver Notifications

A deep dive into Android ContentProvider cross-process data sharing, covering URI routing, transparent Cursor IPC, and ContentObserver change notifications.

Jetpack Compose Modifier Internals: From Modifier.Node to Layout and Drawing

A deep dive into the Compose Modifier chain, the shift from composed to Modifier.Node, how declarative modifier pipelines are built, and where performance gains come from.

Android Process Survival and Resource Scheduling: OOM Adj to LMK

A system-level look at Android OOM Adj scoring, LMK and lmkd evolution, cgroup memory isolation, foreground services, expedited WorkManager jobs, and memory self-monitoring.

Jetpack Compose Recomposition Performance: Stability, derivedStateOf, and Skipping

A practical end-to-end guide to diagnosing and optimizing Compose recomposition, covering stability inference, compiler reports, Layout Inspector, derivedStateOf, and state read placement.

Android Paging 3 Deep Dive: PagingSource, RemoteMediator, and Reactive Pagination

A deep breakdown of Paging 3's three-layer architecture: Pager, PagingSource, and RemoteMediator, including Room, RecyclerView, coroutine dispatchers, caching, and common pitfalls.

Android SharedPreferences to DataStore Deep Dive: From ANR Risk to Flow-Based Coroutine Storage

A deep look at SharedPreferences locking and ANR root causes, Jetpack DataStore's design, migration paths, Preferences DataStore, Proto DataStore, and coroutine-based storage architecture.

Android WorkManager Scheduling: Constraints, Doze, Expedited Work, and Task Chains

A deep dive into WorkManager scheduling, the Constraint engine, Doze compatibility, task-chain orchestration, Expedited Work, foreground-service tradeoffs, and dumpsys debugging.

Kotlin K2 Compiler: Unified Frontend, Type Inference, and Android Migration

A practical deep dive into Kotlin K2's FIR frontend, rewritten type inference, build-performance impact, kapt-to-KSP migration, compiler plugin changes, and Android project rollout.