2012-07-25 40 views

回答

22

也许你正在寻找:

Activity.runOnUiThread(Runnable action) 
1

我不记得invokeLater()究竟是什么,但如果你想执行一些延迟的事情,你可以使用postDealayed()。这是在UI线程上进行的,因此不适合长时间运行的任务。

+1

'的invokeLater()'提出了'Runnable'放到队列中,以便它将由EDT执行。 – 2012-07-25 02:29:09

+0

postDelayed()不是静态函数吗?那么我必须随时携带UI线程的处理程序才能调用它? – GMsoF 2012-07-25 02:32:40

+0

@GregKopff函数的位置(在哪个类中)? – GMsoF 2012-07-25 02:33:57

4
Activity.runOnUiThread(Runnable action); 

上述方法比Java的的invokeLater略有不同,因为它会检查,如果你已经在UI线程,然后它会立即运行Runnable接口。

还有另一种方法可以确保您的Runnable被稍后调用,即使您在UI线程上也不会立即调用。要做到这一点,你写下面的代码,而你是在主线程..如果你把这个当后台线程运行的您​​将会在后台线程exected ..

Handler h = new Handler(); 
    h.post(new Runnable() { 
     @Override 
     public void run() { 
     //your code.. 
     } 
    );