2011-04-16 91 views
0

我已经开发了一个黑莓应用程序,弹出一个全球弹出屏幕时,文本消息进来。我有这个应用程序在火炬上工作正常,我现在测试它在我的风暴2.它正在建造4.7 JDE。全球屏幕奇怪的问题

问题是,当我收到一条短信时,我收到了与2个不同设备/ os不一致的结果,在手电筒上该应用显示弹出式屏幕并关闭了没有问题的退出键。

但是,在风暴2(OS 5.0)整个手机冻结,并需要重新启动。我怀疑屏幕被推入堆栈,因为它有一个ticker,当我重新启动手机时,我可以在重新启动前从ticker run方法的日志中看到log.info()注释。

当设备锁定并且没有按键响应时,我无法在堆栈上看到任何屏幕(在按下手电筒时会按需关闭弹出窗口)。

我按照各种轮圈页面上的建议推送屏幕。

synchronized (Application.getEventLock()) 
         { 
      Ui.getUiEngine().pushGlobalScreen(pop, 1, UiApplication.GLOBAL_QUEUE); 
         } 

有关我的应用程序的一些注意事项 - 应用程序是系统自动启动模块,并覆盖acceptsForeground所以它从来没有在应用程序切换显示。它扩展了Application。

任何建议是值得欢迎的,因为这让我难住。

问候

+1

您推送全局屏幕的代码是可以的(除了它可以更好地格式化)。所以我认为有其他问题导致这个问题。 – 2011-04-17 19:41:44

回答

0

我想知道您正在使用推......既然你明明想与用户交互,你可能会更好的方法提供继承的UIApplication,进入它自己的事件实例后调度队列,然后利用它的过程来通过invokeLater()启动弹出窗口

我只说这是因为我使用此方法定期进行背景推送收听应用程序。

看来,如果您依赖捕获通用事件锁,您可能会与其他应用程序进入一些问题,这些应用程序可能不像您自己的友好或礼貌。

希望这至少有帮助。

+0

从API文档:Application.getEventLock() - 检索应用程序用户界面事件锁定。顺便说一下,'UiApplication'是声明'getEventLock()'的'Application'的子类。所以调用'UiApplication.getEventLock()'你真的调用'Application.getEventLock()'。所以我相信海报的代码在这部分中是OK的。 – 2011-04-17 19:25:59

+0

来自同一个文档:“应用程序:不需要任何用户交互的应用程序可以直接从这个类派生,需要用户交互的应用程序应该从UiApplication派生。” 我以这种方式使用它,它总是为我工作。操作系统4.5 - 操作系统5.0,当尝试“事情”时,这是一个尝试的事情。 他们为什么这么说?像往常一样,RIM只知道...... – Dan 2011-04-17 20:09:33