在post(Runnable r)到主线程的处理程序和在主线程中运行之间有什么区别

时间:2010-11-28 01:59:37

标签: android handler

//case 1:post to main thread's handler
mHandler.post(new Runnable(){
    public void run(){
      dosomething();  //update UI
    });

//case 2:run in main thread
dosomething();

2 个答案:

答案 0 :(得分:3)

即使你在处理程序的线程上,案例1也会排队,案例2将立即执行。

答案 1 :(得分:2)

好吧,如果你在主线程中,那么你就是主线程,所以没关系。

但是很多时候,你处于一个工作线程中,并希望做一些只能在主线程中完成的事情(比如更新UI)。在这些情况下,您需要做一些特殊的事情来在主线程上运行代码 - 您发布的处理程序代码就是一个例子。