Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: android, coroutines, dispatcher

Почему при работе с плеером необходим main-диспетчер? Что происходит при вызове из другого потока?

Вопрос касается работы с UI и мультимедийными компонентами в Android.

Короткий ответ

Плеер требует main-диспетчера, потому что управляет UI-элементами (например, SurfaceView). Вызов из другого потока может вызвать краш.

Длинный ответ

Почему Main-поток?

  • Android разрешает обновлять UI только из главного потока.

  • Плеер взаимодействует с SurfaceView/TextureView, которые являются UI-компонентами.

Что происходит в другом потоке?

// Ошибка: CalledFromWrongThreadException
thread {
    mediaPlayer.start() // Вызов не из main-потока
}

Решение:

lifecycleScope.launch(Dispatchers.Main) {
    mediaPlayer.start() // Корректный вызов
}

Вывод:
Все операции с плеером должны выполняться в Main-потоке.

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#android

#coroutines

#dispatcher

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.