Какая разница между Activity.runOnUiThread(runnable action) и Handler.post()?

Какие отличия/преимущества/недостатки между использованием Activity.runOnUiThread или Handler.post(runnable action) в андроиде?

Ответ 1

Activity.runOnUiThread, как следует из названия, будет выполнять Runnable в потоке, который в настоящее время отвечает за пользовательский интерфейс. Итак, если у вас есть интенсивная задача с процессором, это может привести к тому, что пользовательский интерфейс не реагирует на короткий период времени. И наоборот, Handler предоставляет вам возможность создавать поток, запускать некоторый код и уведомлять пользовательский интерфейс, когда вы закончите (например, Handler.sendMessage).

Документы для Handler определяют это лучше, чем я могу:

Когда процесс создается для вашего приложение, его основной поток предназначенная для запуска очереди сообщений который заботится об управлении объекты приложения верхнего уровня (мероприятия, широковещательные приемники и т.д.) и любые окна, которые они создают. Ты можешь создавать свои собственные потоки и общаться с основным поток приложений через обработчик. Это делается путем вызова той же записи или sendMessage, как и раньше, но из вашей новой темы. Данный Runnable или Message будет чем запланировано в сообщении обработчика очереди и обрабатывается, когда это необходимо.