java – 如何从线程更新blackberry UI项?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何从线程更新blackberry UI项?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2094字,纯文字阅读大概需要3分钟。
内容图文
![java – 如何从线程更新blackberry UI项?](/upload/InfoBanner/zyjiaocheng/812/d8b699b760f44de2ae4625753dc432be.jpg)
public class PlayText extends Thread {
private int duration;
private String text;
private PlayerScreen playerscrn;
public PlayText(String text, int duration) {
this.duration = duration;
this.text = text;
this.playerscrn = (PlayerScreen)UiApplication.getUiApplication().getActiveScreen();
}
public void run() {
synchronized(UiApplication.getEventLock()) {
try{
RichTextField text1player = new RichTextField(this.text, Field.NON_FOCUSABLE);
playerscrn.add(text1player);
playerscrn.invalidate();
Thread.sleep(this.duration);
RichTextField text2player = new RichTextField("hahhaha", Field.NON_FOCUSABLE);
playerscrn.add(text2player);
playerscrn.invalidate();
Thread.sleep(1000);
RichTextField text3player = new RichTextField("Done", Field.NON_FOCUSABLE);
playerscrn.add(text3player);
playerscrn.invalidate();
}catch(Exception e){
System.out.println("I HAVE AN ERROR");
}
}
}
}
使用上面的代码,我正在尝试创建一个小型文本播放器.
而是逐个获取所有文本标签,例如
显示text1player
等待this.duration毫秒
显示text2player
等待1000毫秒
显示text3player
线程完成.
屏幕等待this.duration 1000毫秒并一次显示所有标签.
我尝试使用runnable并调用.invokeLater或.invokeAndWait,但我仍然得到相同的行为,即使我像上面那样使用synchronized变脏,它仍然不起作用.
有谁知道我如何一次显示每个标签?
谢谢!
解决方法:
尝试在sleep语句之间移动同步…也许它没有显示,因为你已经获得了锁定,并且在你睡觉时UI线程无法更新.
当您的线程正在睡眠时,您是否在UI中看到延迟或无响应?试试这种方式:
public class PlayText extends Thread {
private int duration;
private String text;
private PlayerScreen playerscrn;
public PlayText(String text, int duration) {
this.duration = duration;
this.text = text;
this.playerscrn = (PlayerScreen)UiApplication.getUiApplication().getActiveScreen();
}
private void displayTextLabel(string textToDisplay){
synchronized(UiApplication.getEventLock()) {
playerscrn.add(new RichTextField(textToDisplay, Field.NON_FOCUSABLE));
playerscrn.invalidate();
}
}
public void run() {
try{
displayTextLabel(this.text);
Thread.sleep(this.duration);
displayTextLabel("hahhaha");
Thread.sleep(1000);
displayTextLabel("Done");
}catch(Exception e){
System.out.println("I HAVE AN ERROR");
}
}
}
}
内容总结
以上是互联网集市为您收集整理的java – 如何从线程更新blackberry UI项?全部内容,希望文章能够帮你解决java – 如何从线程更新blackberry UI项?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。