Работал ли с потоками

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

Ответ

Да, работал. В Android есть несколько способов работы с потоками:

  1. Thread - базовый класс Java для создания потоков:
new Thread(() -> {
    // Фоновый код
    runOnUiThread(() -> {
        // Обновление UI
    });
}).start();
  1. Handler/Looper - для работы с очередью сообщений:
Handler handler = new Handler(Looper.getMainLooper());
handler.post(() -> {
    // Код выполнится в основном потоке
});
  1. AsyncTask (устарел) - для простых фоновых задач с обновлением UI.

  2. Coroutines - современный подход:

lifecycleScope.launch {
    val result = withContext(Dispatchers.IO) {
        // Фоновый код
    }
    // Обновление UI (автоматически в основном потоке)
}
  1. RxJava - реактивное программирование.

Важно помнить:

  • UI можно обновлять только в основном потоке
  • Долгие операции нельзя выполнять в основном потоке
  • Для работы с сетью/БД/файлами нужно использовать фоновые потоки