ANR overview at Uber + Leveraging ApplicationExitInfo API
summary
Uber describes concrete fixes and tools: bitmap processing and heavy IO moved off the UI thread, RxJava’s blockingGet is banned after causing ANRs, and deadlocks show main thread waiting on background thread (thread 1 vs thread 22) in real traces. Detection uses Play Console (delayed), an open-source-inspired custom ANR detector (noisy but fast metadata), and ApplicationExitInfo API on Android 11+ which gives OS-backed exit reasons and full stacks. Lint checks, a Flipper Rx profiler that crashes on long ops in debug, and backend classification prove effective.
AI-written summary · about
chapters (10)
- 0:00Introduction to ANR challenges
- 3:57Long-running method ANRs
- 5:42Broadcast receiver ANRs
- 7:08Deadlock ANR cases
- 8:33Detecting ANRs at Uber
- 12:26Leveraging ApplicationExitInfo API
- 14:32Preventing ANRs in practice
- 19:10Monitoring ANR baselines
- 20:57Open-source ANR tools
- 21:58Q&A and resources
related talks
19mRevolutionizing ANR Detection at Sentry
29mHow the Android Framework Monitors, Processes, and Triggers ANRs
29mWhy ANRs are Hard to Solve and What You Can Do to Make it Easier
12mUnderstanding and debugging ANR's (Android Not Responding)
39mWhere Is Your ANR Coming From? — Diagnosing How It Occurs and Prescribing Remedies by Symptom
29mHow the Android Framework Monitors, Processes, and Triggers ANRs
39mUnblocking The Main Thread: Solving ANRs and Frozen Frames
24mMake the Most of Android Vitals
