Luc*_*cas 7 java multithreading blackberry
我正在试图理解管理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");
}
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于许多初学者来说,这三个概念非常混乱,因此任何描述其功能的解释性源代码都会对任何人都有很大帮助.
提前致谢!
我对三种不同方法的理解:
Application.getEventLock() - 尽快获得事件锁定UiApplication.invokeLater()- 放入Runnable事件队列,它将在之前放入此队列的所有其他任务之后执行UiApplication.invokeAndWait()- 与前一个相同,但调用线程将停止,直到Runnable运行我的个人意见从不使用第一种方法.我不认为我的任何绘图或UI更改任务更优先考虑其他任务已经放入事件队列.
我主要使用第二种方法,当我实现一些模态弹出对话框选择时,我使用了最后一种方法.
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |