How do you improve the performance of an Android app?
Measure first with Android Studio Profiler for CPU, memory, and network; Macrobenchmark for startup and scrolling; and Play Console vitals for real-world ANR and crash rates on real devices, which is what actually matters.
Startup time:
- Do as little as possible in
Application.onCreate. Third-party SDK initialisation is the usual culprit — use App Startup or lazy initialisation. - Avoid disk and network on the startup path.
- Baseline Profiles ship ahead-of-time compilation hints and give a substantial, low-effort improvement to startup and scrolling.
Rendering and jank:
- Keep the main thread free — no I/O, no heavy parsing.
- Flatten deep view hierarchies; use ConstraintLayout, or Compose with stable parameters to limit recomposition.
- Use paging for long lists rather than loading everything.
Memory:
- Fix leaks with LeakCanary — retained Activities are the most common.
- Load images at display size with Coil or Glide rather than full resolution bitmaps, which is the single largest source of out-of-memory crashes.
App size: enable R8 shrinking and obfuscation, ship an Android App Bundle so users download only what their device needs, use WebP or vector drawables, and audit dependencies.
Note: Test on a low-end device. An app that feels fine on a flagship can be unusable on the hardware much of the market actually uses.





