1

我在 Blackberry 的 invokeLater 方法中有一个线程,例如:

startButton.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field arg0, int arg1) {
    UiApplication.getUiApplication().invokeLater(new Runnable() {
        public void run() {
            Thread thread = new Thread(){
                public void run() {
                    uploadFile();
                }
            };
            thread.start();
        }
    });
}

我有一个线程,因为我想在后台运行该功能,并希望能够在其工作的同时做其他事情。我想知道这是否是一个好方法。在这种情况下我真的需要 invokeLater 吗?

4

1 回答 1

2

简短的回答:没有。

长答案:

InvokeLater 将 Runnable 放在事件队列中,以便及时,当事件循环看到 Runnable 时,它​​将在事件线程上执行它。由于您在 FieldChangeListener 的 fieldChanged 方法中调用 invokeLater,因此您是从事件线程调用它。除非您想要将线程的启动延迟到某个未知的稍后时间,否则您不需要使用invokeLater。

于 2012-10-18T17:02:43.417 回答