我试图了解管理 UI 交互的三种方法之间的区别。
在尝试在真实案例中弄清楚这三个术语时,我真的很困惑。
下面的代码显示了 invokeAndWait 方法的功能,但如果我用 invokeLater 或 getEventLock() 替换它,程序将以完全相同的方式工作。
有人可以修改代码以显示更新 UI 的三种方法之间的差异吗?
public final class HelloWorldMainScreen extends MainScreen
{
private LabelField labelField;
public HelloWorldMainScreen()
{
labelField = new LabelField("Hello World");
add(labelField);
MainScreenUpdaterThread thread = new MainScreenUpdaterThread(this);
thread.start();
}
public void appendLabelText(String text){
labelField.setText(labelField.getText()+"\n"+text);
}
}
public class MainScreenUpdaterThread extends Thread {
HelloWorldMainScreen mainScreen;
public MainScreenUpdaterThread(HelloWorldMainScreen mainScreen){
this.mainScreen = mainScreen;
}
public void run(){
for (int i = 0; i < 10; i++) {
try{
Thread.sleep(5000);
}catch(InterruptedException ex){};
UiApplication.getUiApplication().invokeAndWait(new Runnable() {
public void run() {
mainScreen.appendLabelText("Update");
}
});
}
}
}
这三个概念对于许多初学者来说非常混乱,因此任何描述其功能的解释性源代码对任何人都将非常有帮助,我认为。
提前致谢!