Blackberry 未捕获异常无应用程序实例
我正在开发处理多入口点方法的UI应用程序 我是指的,并尝试做一个演示。 代码如下:-Blackberry 未捕获异常无应用程序实例,blackberry,Blackberry,我正在开发处理多入口点方法的UI应用程序 我是指的,并尝试做一个演示。 代码如下:- 公共类DemoApp扩展UiApplication实现RealtimeClockListener { 私有静态DemoApp-dmMain; 私有静态最终长dm_APP_ID=0x6ef4b845de59ecf9L; 私有静态DemoApp getDemoApp() { 如果(dmMain==null) { RuntimeStore dmAppStore=RuntimeStore.getRuntimeStore
公共类DemoApp扩展UiApplication实现RealtimeClockListener
{
私有静态DemoApp-dmMain;
私有静态最终长dm_APP_ID=0x6ef4b845de59ecf9L;
私有静态DemoApp getDemoApp()
{
如果(dmMain==null)
{
RuntimeStore dmAppStore=RuntimeStore.getRuntimeStore();
dmMain=(DemoApp)dmAppStore.get(dm_APP_ID);
}
返回dmMain;
}
私有静态无效setDemoApp(DemoApp demoAppMain)
{
RuntimeStore dmAppStore=RuntimeStore.getRuntimeStore();
dmAppStore.remove(dm_APP_ID);
dmAppStore.put(dm_APP_ID,demoAppMain);
}
公共静态void main(字符串[]args)
{
Log.d(“应用程序参数”+args);
如果(args.length>0&&args[0].equals(“Demo_Alternate”))
{
Log.d(“运行演示###########运行演示#交替”);
dmMain=新的DemoApp();
dmMain.enterEventDispatcher();
setDemoApp(dmMain);
}
其他的
{
Log.d(“Running Demo###########Running Demo###Running Demo”);
getDemoApp().initializeMain();
}
}
公共应用程序()
{
this.addRealtimeClockListener(this);
}
private void initializeMain()
{
UiApplication.getUiApplication().invokeLater(新的Runnable())
{
公开募捐
{
尝试
{
推屏(新的DemoMainScreen());
}捕获(例外e)
{
Log.e(e.toString());
}
}
});
}
已更新的公共文件()
{
showMessage(“DemoAppClock更新”);
Log.d(“DemoAppClock更新#####DemoAppClock更新###DemoAppClock更新”);
}
私有void showMessage(字符串消息)
{
已同步(Application.getEventLock())
{
Dialog dlg=新建对话框(Dialog.D_OK,消息,Dialog.OK,null,Manager.FIELD_HCENTER);
Ui.getUiEngine().pushGlobalScreen(dlg,1,UiEngine.GLOBAL_队列);
}
}
}
:-我已经创建了一个名为Demo\u alternate的备用入口点,该入口点在启动时运行。●如果应用程序有单独的入口点,则意味着单独的进程 现在我的问题是:
仅简要查看了此代码,但发现了一个明显的问题:
dmMain.enterEventDispatcher();
setDemoApp(dmMain);
enterEventDispatcher永远不会返回,因此您永远不会将应用程序实例放在RuntimeStore中
我建议您阅读下面的KB文章,您可能会发现它访问RuntimeStore维护的对象的方法更容易使用。或者不是
更新
如果此解决方案不起作用,请用更正的代码更新您的原始帖子 我当然同意Peter的观点,在
enterEventDispatcher()
之后调用setDemoApp(dmMain)
意味着它不会被调用
也就是说,我认为你在这里有一个更基本的误解
使用备用入口点将创建多个流程。
但是,你说你不想要分开的过程。你能告诉我们为什么不行吗
例如,设计为协同工作的单独黑莓进程仍然可以共享数据
也许你可以告诉我们更多关于你的“演示”和“替代演示”应该做什么。。我尝试了这种方法dmMain=new DemoApp();setDemoApp(dmMain);dmMain.enterEventDispatcher()。。得到同样的例外情况。这意味着我们不能使用这种方法。有一个用例,您只需要一个应用程序实例,但也希望它在设备启动时启动——这也是问题中链接到的BB KB文章所暗示的。备用条目不必创建不同的应用程序。例如,它可以只添加侦听器。或者只是将它知道的现有应用程序前景化——我认为这就是这张海报想要做的。也许。。。基于这个问题和Mario的其他问题,我不相信这个用例是他真正想要的。无论如何,我认为对他来说最好是澄清他想做什么。然而,这两个入口点将导致两个单独的进程调用
main()
,对吗?您仍然可以有一个Application
singleton实例,例如,如果他只需要一个Application对象,那么它将保持某种持久状态(并不是说这是实现持久状态的唯一方法)。我只是想了解他想要完成什么。