我只是从J2ME和lcdui开始,我正在看一些示例代码,这些代码从工作线程中调用lcdui对象上的方法。
以我在桌面GUI工具箱中的经验,通常是禁止这样做的-lcdui是否与众不同?这样做真的可以吗?
(我已经在Google上搜索了该问题的答案,但未找到任何内容-某些官方文档中的明确答案的链接非常棒!)
最佳答案
LCDUI有点有趣,您可以做什么和不能做什么通常取决于实现。我已经为BlackBerry写了一些应用程序,这些应用程序从后台线程访问UI对象没有问题(除了您自己创建的常见线程问题),但是我敢肯定,其他一些平台也会禁止这样做。
如果您对此有所担心,或者它导致了您的问题,那么您可能想看看使用javax.microedition.lcdui.Display.callSerially(Runnable)
。这将在UI线程中执行给定的Runnable
对象(如果LCDUI中存在这种情况),并使用其他UI事件和绘画操作对其进行序列化。您可以在J2ME API docs中阅读有关它的更多信息。