15

有时我觉得使用 AsyncTask 对任务来说太过分了,我正在寻找类似的功能,如 Android 中的 SwingUtilities.invokeLater。因为我只想执行一行代码,没有必要为此创建一个新类。

4

3 回答 3

24

也许您正在寻找:

Activity.runOnUiThread(Runnable action)
于 2012-07-25T02:52:26.033 回答
6
Activity.runOnUiThread(Runnable action);

上述方法与 java 的 invokeLater 略有不同,因为它会检查您是否已经在 ui 线程上,然后它将立即运行您的 Runnable。

还有另一种方法可以确保您的 Runnable 稍后调用,而不是立即调用,即使您在 UI 线程上也是如此。为此,您在主线程上编写以下代码..如果您在后端线程上调用它,您的可运行将在后端线程上执行..

Handler h = new Handler();
h.post(new Runnable() {
    @Override
    public void run() {
        //your code..
    }
);
于 2016-01-14T22:54:40.820 回答
1

我不记得确切是做什么invokeLater()的,但是如果您想延迟执行某些操作,可以使用postDealayed()。这在 UI 线程上进行,因此自然不适合长时间运行的任务。

于 2012-07-25T02:27:52.257 回答