Какие знаешь проблемы с многопоточностью в Android

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

Ответ

Основные проблемы:

  1. UI обновления из фонового потока - только главный поток может изменять UI. Решение: runOnUiThread() или Handler.
thread {
    runOnUiThread { textView.text = "Updated" }
}
  1. Race conditions - когда несколько потоков обращаются к общим данным. Решение: синхронизация (synchronized, Mutex).

  2. Deadlocks - взаимная блокировка потоков. Избегайте вложенных блокировок.

  3. Утечки памяти - фоновые потоки держат ссылки на Activity. Решение: WeakReference или корутины с lifecycleScope.

  4. ANR - долгие операции в главном потоке. Выносите тяжелые задачи в Dispatchers.IO.

Для работы с многопоточностью в современном Android предпочтительны корутины с четким управлением жизненным циклом.