Android Articles

Android Simpleperf Flame Graphs: From CPU Sampling to Performance Bottleneck Analysis

A deep dive into Android Simpleperf, covering flame graph generation, call-stack analysis, cold-start hotspots, RenderThread investigation, multi-thread CPU attribution, and how to combine Simpleperf with Systrace.

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.

What Is Android Binder? A Practical Guide to the Binder IPC Model

A question-driven explanation of Android Binder, why system services depend on it, and which roles participate in a cross-process call.

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.

What Should Android CI/CD Quality Gates Include?

A practical structure for Android CI/CD quality gates across builds, tests, lint, signing, performance benchmarks, release, and rollback.

How to Analyze a Slow Android Gradle Build

A practical path for analyzing slow Android Gradle builds, including Build Scan, Configuration Cache, KSP, task dependencies, and cache hits.

Getting Started with Android Perfetto

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

What Are RecyclerView's Four Cache Levels? Understanding ViewHolder Reuse

A practical explanation of RecyclerView's four cache levels, ViewHolder reuse order, RecycledViewPool, Prefetch, and how they affect scrolling performance.

Which Metrics Should Android Startup Optimization Track First?

A practical guide to Android startup metrics, phase breakdowns, Perfetto trace signals, and production governance priorities.

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.

How Should You Choose Between DataStore and SharedPreferences?

Compares SharedPreferences, Preferences DataStore, and Proto DataStore across use cases, threading, type safety, and migration strategy.

What Is the Difference Between Glance and RemoteViews?

Explains how Android Glance AppWidget relates to RemoteViews, where they differ, when each fits, and how to think about migration.

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.

Why Does a Room Flow Update Automatically?

Explains how Room, InvalidationTracker, SQLite table invalidation, and Kotlin Flow work together to rerun queries automatically.

Android AGSL RuntimeShader: From Skia Compilation to Compose Effects

A deep dive into Android AGSL RuntimeShader, including the AGSL-to-SkSL-to-GPU pipeline, uniform shader sampling, Compose integration, practical effects, and performance limits.

Android Glance AppWidget Deep Dive: RemoteViews and Compose Widgets

A deep dive into the full Android Glance AppWidget pipeline, from RemoteViews cross-process rendering and the Glance translation engine to Actions, update flows, and update strategy choices.

Android 16 KB Page Size Migration: ELF Alignment, NDK Builds, and Performance

Android 15 and Google Play are moving toward 16 KB pages. This guide explains ELF segment alignment, linker behavior, NDK build changes, TLB validation, and CI gates.

Android Fragment Lifecycle and FragmentManager: Transactions, Back Stack, and State Recovery

A deep dive into Fragment transaction async execution, back-stack state recovery, ViewModel lifecycle coordination, commitNow, onSaveInstanceState timing, and common NPE and leak traps.

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 Dynamic Feature Delivery: From App Bundle to SplitCompat

An end-to-end guide to Android dynamic feature delivery, covering App Bundle splits, SplitCompat runtime loading, Play Feature Delivery, and package size tradeoffs.