我刚刚开始使用J2ME和lcdui,我正在查看一些从工作线程调用lcdui对象上的方法的示例代码。
根据我使用桌面GUI工具包的经验,这通常是被禁止的 - lcdui是不同的?这样做真的可以吗?
(我已经用Google搜索了这个问题但没有找到任何答案 - 在某些官方文档中找到明确答案的链接会很棒!)
答案 0 :(得分:3)
LCDUI有点滑稽,你可以做什么,不能做什么往往取决于实施。我为BlackBerry编写的应用程序从后台线程访问UI对象没有问题(除了你自己创建的常见线程问题),但我很确定其他一些平台会禁止这个。
如果您对此感到担心,或者它导致您遇到问题,您可能需要查看使用javax.microedition.lcdui.Display.callSerially(Runnable)
。这将在UI线程中执行给定的Runnable
对象(如果在LCDUI中存在这样的事物)并将其与其他UI事件和绘制操作序列化。您可以在J2ME API docs。
答案 1 :(得分:1)
使用javax.microedition.lcdui类,根据this documentation的并发部分,线程安全被认为是UI类的目标之一。正如Rory指出的那样,不同的供应商完全有可能将其视为“建议”而不是规则。
有一段时间,我一直在寻找类似的信息,但也无法找到提供Google以获得良好结果的神奇措辞。
祝你好运!