UI スレッド以外のスレッドから呼び出す時は、下記2つの書き方は同じものです。
Looper.getMainLooper()
Runnable task = getTask();
new Handler(Looper.getMainLooper()).post(task);
Activity#runOnUiThread()
Runnable task = getTask();
runOnUiThread(task);
UIスレッドから呼び出す時は、下記のソースにより、runOnUiThreadの場合は直接UIスレッドに実行されます。
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else { //UIスレッドの場合は直接実行する
action.run();
}
}