我在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吗?

最佳答案

简短的回答:不。

长答案:

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

关于java - Blackberry中invokeLater内部的线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12959296/

10-09 08:11