Activity.runOnUiThread(runnable action)和Handler.post()之间有什么区别?

mat*_*skn 30 android

使用Activity.runOnUiThreadHandler.post(runnable action)在Android中有什么区别/优点/缺点?

Eri*_*ass 23

Activity.runOnUiThread,就像它的名字所暗示的那样,将在当前负责UI的线程中执行Runnable.因此,如果您有CPU密集型任务,它可能会使UI在短时间内无响应.相反,Handler提供了一种方法来创建线程,运行一些代码,并在完成后通知UI(即Handler.sendMessage).

Handler的文档比我更好地说明了这一点:

为应用程序创建进程时,其主线程专用于运行消息队列,该队列负责管理顶级应用程序对象(活动,广播接收器等)及其创建的任何窗口.您可以创建自己的线程,并通过Handler与主应用程序线程进行通信.这是通过调用与以前相同的post或sendMessage方法完成的,但是来自您的新线程.给定的Runnable或Message将在Handler的消息队列中进行调度,并在适当时进行处理.