Я согласен, что фоновые потоки не подходят для обновлений пользовательского интерфейса.Поскольку пользователь «заблокирован» в ожидании, пока пользовательский интерфейс покажет им, что происходит - это не имеет смысла с логической точки зрения - и это может вызвать другие проблемы с кодированием.
Самые большие вещи, которые я считаю хорошими для фоновых потоков, часто связаны с асинхронными операциями.(Подумайте о веб-странице AJAX).Если вы хотите, чтобы ваш пользователь мог взаимодействовать с пользовательским интерфейсом , пока что-то происходит.Хорошим примером будет получение, обновление, получение любых данных из Интернета.
Даже если вы выполняете какие-либо веб-операции, которые, по вашему мнению, должны быть синхронными - (например,загрузка сообщения с веб-сайта) - вы, вероятно, захотите обработать его асинхронно , потому что вы не знаете, какие условия в сети приведут к тому, что оно займет много времени - и, возможно, в конечном итоге произойдет таймаут или произойдет сбой.(Что-то вроде записи аудио тоже будет работать так).
Даже если вы захотите заблокировать ваше приложение при чтении такого синхронного фрагмента данных изв Интернете, вы все равно можете сделать это асинхронно - чтобы вы могли загружать данные в фоновом потоке - пока вы предоставляете индикатор выполнения, элемент управления счетчиком (прогресс) или позволяете пользователю нажать «Отмена».Кнопка "в foreground потоке пользовательского интерфейса.
Думайте об" асинхронных "запросах как о тех, которые будут занимать более длительный период времени или в которых вы не можете определить сколько времени это займет.