有时我觉得使用AsyncTask对于任务来说太过分了,我正在寻找类似于Android中的SwingUtilities.invokeLater的功能。因为我只想执行一行代码,没有必要为此创建一个新类。
答案 0 :(得分:24)
也许你正在寻找:
Activity.runOnUiThread(Runnable action)
答案 1 :(得分:5)
Activity.runOnUiThread(Runnable action);
上面的方法与java的invokeLater略有不同,因为它检查你是否已经在ui线程上,然后它会立即运行你的Runnable。
还有另一种方法可以确保稍后调用Runnable,即使你在UI线程上也不会立即调用。要做到这一点,你在主线程上编写以下代码..如果你在后端线程上调用它,你的runnable将被执行到后端线程..
Handler h = new Handler();
h.post(new Runnable() {
@Override
public void run() {
//your code..
}
);
答案 2 :(得分:1)
我不记得invokeLater()
究竟做了什么,但如果你想执行延迟的事情,你可以使用postDealayed()。这种情况发生在UI线程上,因此不适合长时间运行的任务。