如何在黑莓应用程序中设置备用入口点?
Posted
技术标签:
【中文标题】如何在黑莓应用程序中设置备用入口点?【英文标题】:How to setup alternate entry point in Blackberry application? 【发布时间】:2011-04-24 16:14:16 【问题描述】:如何在黑莓应用程序中设置备用入口点。将有 2 个应用程序
-
UI 应用程序
后台应用程序:将在自动启动时运行。
有一个关于这个的blackberry knowledge center article,我试过了,编码如下。但是点击应用程序图标,没有任何反应。
class EntryPointForApplication extends UiApplication
public EntryPointForApplication()
GUIApplication scr = new GUIApplication();
pushScreen(scr);
public static void main(String[] args)
if ( args != null && args.length > 0 && args[0].equals("background1") )
// Keep this instance around for rendering
// Notification dialogs.
BackgroundApplication backApp=new BackgroundApplication();
backApp.enterEventDispatcher();
backApp.setupBackgroundApplication();
else
// Start a new app instance for GUI operations.
EntryPointForApplication application = new EntryPointForApplication();
application.enterEventDispatcher();
类 UI 应用程序
class GUIApplication extends MainScreen
public GUIApplication()
add(new LabelField("Hello World"));
后台应用
class BackgroundApplication extends Application
public BackgroundApplication()
// TODO Auto-generated constructor stub
public void setupBackgroundApplication()
我根据这个(edit) bad-link配置了Blackberry_App_Discriptor.xml 任何机构都可以帮忙,哪里出了问题。
【问题讨论】:
顺便说一句,底部的第二个链接与第一个链接的 URL 完全相同 【参考方案1】:尝试记录 args 的值和(如果不是 null)args[0] 以查看实际传递给 main() 的内容。后台模块未传递参数(或未传递正确的值)可能是您的编译过程存在问题。
另外,尝试将您的 EntryPointForApplication 实例保存到一个静态变量中,以便它维护一个引用(不是垃圾收集),这样如果在它已经运行时从主屏幕再次单击该图标,您不会启动应用程序的多个实例。例如:
class EntryPointForApplication extends UiApplication
private static EntryPointForApplication theApp;
public EntryPointForApplication()
GUIApplication scr = new GUIApplication();
pushScreen(scr);
public static void main(String[] args)
if ( args != null && args.length > 0 && args[0].equals("background1") )
// Keep this instance around for rendering
// Notification dialogs.
BackgroundApplication backApp=new BackgroundApplication();
backApp.setupBackgroundApplication();
backApp.enterEventDispatcher();
else
if (theApp == null)
// Start a new app instance for GUI operations.
theApp = new EntryPointForApplication();
theApp.enterEventDispatcher();
【讨论】:
Application.enterEventDispatcher() “正常情况下”不会返回,所以:backApp.setupBackgroundApplication(); backApp.enterEventDispatcher();是此解决方案的正确顺序。 +1 让两个不同的应用程序(BackgroundApplication、EntryPointForApplication)只用一个鳕鱼就可以运行的好方法。大多数示例为每个入口点注册一个相同类的应用程序。我将尝试在每个接口上实现不同的接口(PushApplication、GlobalEventListener)。 @Marc,静态变量 theApp 在这里完全没用。 BB 中的静态对象仅限于进程 - 它们不在不同的应用程序实例之间共享。 main 方法对每个应用实例只运行一次,因此检查 theApp 是否为 null 将始终成功。以上是关于如何在黑莓应用程序中设置备用入口点?的主要内容,如果未能解决你的问题,请参考以下文章