【发布时间】:2013-07-01 06:36:59
【问题描述】:
我对编写 BlackBerry 应用程序还很陌生,所以也许这是我忽略的一件愚蠢的事情。我必须使用 JDE 5(客户端要求)来支持较旧的 BlackBerry Curve 8520 手机。
我遇到的情况是,只要我在界面上放置 DateField,应用程序就会显着变慢,导致 UI 卡顿。即使是只有一个DateField 和一个按钮的简单布局也具有相同的效果。然后,只要我进入下一个布局,一切都会再次正常。
其中一个布局创建如下(如果这是不正确的做法,请评论):
public void displaySomeLayout() {
final ButtonField okButton = new ButtonField("OK");
final DateField dobField = new DateField("Birthday", System.currentTimeMillis(), DateField.DATE);
/* some other non-ui code */
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
applicationFieldManager.addAll(new Field[] {
dobField,
okButton
});
}
});
}
然后应用程序就会变慢很多。有时,一分钟后它又开始正常响应,有时则没有。
displaySomeLayout() 方法是从 Screen 扩展类的构造函数调用的。然后applicationFieldManager 是一个私有的VerticalFieldManager,它在类构造过程中被实例化。
【问题讨论】:
-
你把上面显示的代码放在哪里?它是否在
Screen子类的构造函数中,也许?methodToGetObjectArray()返回什么?它会返回很多、很多对象还是只返回几个? -
@Nate - 它不在构造函数中。它在该屏幕上调用特定方法时运行(以更新其显示)。
methodToGetObjectArray()返回大约 250 个元素,但我发现手机处理得很好。只要添加了DateField,事情就会变慢。 -
这与您在问题中所说的不同。在问题中,它说添加
ObjectChoiceField或DateField会导致问题。如果ObjectChoiceField不是问题,请不要向我们展示该代码。如您所见,向我们展示是问题的代码。此外,您仍然没有真正回答关于您显示的代码在在哪里 运行的问题。最后,250 个选择其实很多。这听起来像是用户讨厌滚动浏览的 UI。 250真的有必要吗? -
@Nate 是的,不幸的是,他们需要选择他们的居住国家/地区。我会根据您的其他问题更新我的问题。
-
感谢 Nico 的澄清。
标签: blackberry java-me blackberry-jde