Разница между Handler.post (Runnable r) и Activity.runOnUiThread (Runnable r)

Есть ли разница между

new Handler.post(Runnable r); 

а также

 activity.runOnUiThread(Runnable r) 

runOnUiThread в основном подходит для отображения диалогового окна прогресса или выполнения некоторых пользовательских манипуляций перед вызовом AsyncTask . Если вы хотите обновить пользовательский интерфейс в середине выполнения потока, лучшим решением будет создание Handler который обновит ваш пользовательский интерфейс и продолжит работу потока, например, периодически обновляя текстовое представление через несколько секунд, Скажем, функции таймера.

Из официальных документов Handler

укротитель

Для обработчика используются два основных вида использования:

(1) Планировать сообщения и исполняемые файлы, которые должны выполняться как некоторые моменты в будущем.

(2) Заблокировать действие, выполняемое в другом потоке, чем ваше собственное.

Короче говоря, Handler используется для управления различными Runnables.

runOnUiThread

Он используется для выполнения операции, отличной от UI, в потоке пользовательского интерфейса, например, если вы хотите обновить экран из doInBackground () AsyncTask, вам нужно написать часть кода, в которой обновление является пользовательским интерфейсом внутри runOnUiThread (). Но снова это заблокирует пользовательский интерфейс.