Синхронно или асинхронно выполняется Activity.runOnUiThread(), если вызывается из UI потока?
– Синхронно.
Этот вопрос аналогичен вопросу о Handler.post(). Handler.post() выполняется асинхронно и для синхронного выполнения предлагается проверять текущий поток. В runOnUiThread() есть эта проверка. Если текущий поток – это UI тред, то параметр-runnable запускается сразу. Иначе выполнение делегируется в mHandler.post(), где mHandler – это хэндлер, созданный на UI потоке.