Что если приложение долго не будет отвечать пользователю

«Что если приложение долго не будет отвечать пользователю» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Приложение может быть убито системой с ошибкой ANR (Application Not Responding), если UI поток заблокирован более 5 секунд. Основные причины:

  1. Долгие операции в UI потоке (сеть, БД, тяжелые вычисления)
  2. Взаимоблокировки (deadlocks)
  3. Перегруженный UI поток (много работы в onDraw)

Как избежать:

// Переносим тяжелые операции в фоновый поток
lifecycleScope.launch(Dispatchers.IO) {
    val data = heavyOperation()
    withContext(Dispatchers.Main) {
        updateUI(data) // Возвращаемся в UI поток для обновления
    }
}

Дополнительные меры:

  • Использовать ProgressBar/Placeholder для долгих операций
  • Оптимизировать работу с UI (RecyclerView, ViewStub)
  • Мониторить ANR через Firebase Crashlytics