Выбор ответа Senior Платформенные каналы обновлено
Flutter: тяжёлая работа в обработчике канала
Вопрос
Нативный обработчик MethodChannel на Android сжимает видео 10 секунд прямо в обработчике. Что будет?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Главный поток платформы заблокирован: ввод не обрабатывается, возможен ANR. Обработчики каналов по умолчанию выполняются в главном потоке платформы.
Варианты ответа
- Ничего страшного: Flutter автоматически выполняет обработчики каналов в фоновом потоке
- Главный поток платформы заблокирован: ввод не обрабатывается, возможен ANRправильный ответ
- Заблокируется только Dart-изолят, ожидающий ответа, а платформа продолжит работать
- Канал сам вернёт ошибку по тайм-ауту через 5 секунд и освободит поток
Разбор
Обработчики каналов по умолчанию выполняются в главном потоке платформы. Долгая работа там блокирует этот поток, что на Android ведёт к ANR. Правильно уйти в фоновый поток (корутины, executor) или использовать фоновую очередь задач канала (TaskQueue) и ответить через result, когда работа готова. Автоматического фона и тайм-аутов у каналов нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.