在BlackBerry开发中(我说的是BB OS 6+),如果我想在点击按钮时显示另一个屏幕,我看到我可以使用以下任何一种方法来执行此操作:
getScreen().getUiEngine().pushScreen(new MyScreen());
和
UiApplication.getUiApplication.pushScreen(new MyScreen());
上述两种方法都成功显示了新的MyScreen
屏幕。但这两者有什么区别?或者它们是一样的吗?
注意:我特别要问的是它们的行为是否不同(在资源上)以及它们是否以相同的方式处理方法调用。他们对最终用户有任何明显的影响吗?
感谢。
答案 0 :(得分:4)
第一种方法会将屏幕推到与“拥有”包含Field字段的应用程序相关联的堆栈上(我假设您正在调用Field.getScreen()...)。
第二种方法将屏幕推送到“拥有”执行UiApplication.getUiApplication()的线程的应用程序的堆栈......
除非您正在通过ApplicationMenus或某些侦听器进行一些复杂的后台处理或与系统应用程序交互。
主要影响是在每种情况下可访问哪些资源。如果您使用应用程序范围的单例,这些差异最终将影响您的程序。这是RIM建议使用RuntimeStore或PersistentStore使用系统范围的单例的一个原因。
我的经验是开发一个特定的程序我的帮助:http://www.hrbuckley.net/2012/03/blackberrry-singletons-application.html