【问题标题】:How can run background service application and UIApplication same time如何同时运行后台服务应用程序和 UIApplication
【发布时间】:2011-04-24 09:42:44
【问题描述】:

我想同时运行后台服务应用程序和 UIApplication。

是否可以在同一个项目中创建两者或需要创建单独的单独项目。

实际上我对如何在事件线程中调用或启动后台服务感到困惑。

【问题讨论】:

    标签: blackberry


    【解决方案1】:

    您可以通过以下方式为您的应用程序设置备用入口点:

    A- 使用 BlackBerry® Java® Plug-in for Eclipse®

    为原始应用程序创建项目后,创建一个备用入口点以启动应用程序 UI。

    1- 双击项目中的 BlackBerry_App_Descriptor.xml。
    2- 勾选系统模块,不要在黑莓主屏幕上显示应用程序图标。
    3-单击备用入口点选项卡。
    4- 单击添加按钮。
    5- 输入入口点的标题,然后单击“确定”。
    6- 指定将使用此备用入口点启动应用程序的应用程序参数(例如:gui)。
    7- 继续“常用步骤”部分。
    8- 修改原项目的main()方法如下:

    public static void main(String[] args) {
         if ( args != null && args.length > 0 && args[0].equals("gui") ){
              // code to initialize the app
              theApp.enterEventDispatcher();
         } else {
              // code to launch the background thread }
         }
    }
    



    B- 使用 BlackBerry JDE

    为原始应用程序创建项目后,您必须为 UI 入口点创建另一个项目。假设要运行的线程与原始应用程序存在于同一个项目中,请按以下步骤操作:

    1- 右键单击​​项目节点并选择属性。
    2- 在“属性”窗口中,选择“应用程序”选项卡。
    3- 验证是否选中了以下选项:启动时自动运行和系统模块(向系统注册线程)。
    4- 在与原始项目相同的文件夹下创建另一个项目。右键单击新项目节点并选择属性。
    5- 选择应用程序选项卡,然后从项目类型下拉列表中选择备用 CLDC 应用程序入口点。如附件所示,从 Alternate entry point for 下拉列表中选择原始项目的名称(例如,trafficreporter)。还要指定将使用此备用入口点启动应用程序的参数(例如:gui)。 继续执行通用步骤部分。
    6- 修改原项目的main()方法如下:

    public static void main(String[] args) {
         if ( args != null && args.length > 0 && args[0].equals("gui") ){
              // code to initialize the app
              theApp.enterEventDispatcher();
         } else {
              // code to launch the background thread }
         }
    }
    

    【讨论】:

    • 感谢 Ashraf,但我想从事件线程调用后台服务。是否可以?如果是,请告诉我怎么做?
    • 使用 UiApplication.requestForeground() .....如果这些答案对您有帮助,请标记并检查为答案
    • @AshrafBashir。可爱的解释。
    • @AshrafBashir 谢谢。不错的回答我的应用程序运行良好,但我无法显示应用程序图标?我们怎样才能做到这一点?
    • 我必须运行两个后台应用程序。我应该如何运行?@AshrafBashir
    【解决方案2】:

    http://supportforums.blackberry.com/t5/Java-Development/Background-thread-for-push-notifications/td-p/563071

    Blackberry 开发者论坛充满了主题和示例代码来完成这件事。

    就个人而言,我使用备用入口点方法,将后台应用程序作为自动启动 UiApplication(没有图标)运行,它从不推送 MainScreen,但使用自己的调度线程抛出对话框或类似通知,然后当实际的主页图标被按下/单击,我启动 Ui 入口点与用户一起玩。

    【讨论】:

    • 谢谢 dan,但我想从事件线程调用后台服务。是否可以?如果是,请告诉我怎么做?
    • 有两种方法可以做到这一点---方法1.创建一个包含UI和后台监听器的应用程序,并覆盖close()方法,只在后台运行——它从不调用System.exit() 换句话说。这可以完成所有的处理和 UI,并且元素之间的通信相当简单。实现可能很痛苦,因为您需要在任何地方请求背景。 ---方法2:我使用上述的替代进入方法,并在启动时将我的autorun Singleton监听器(使用RuntimeStore Singleton)的引用传递到UI应用程序中。
    • 嗨,丹,你能展示如何做到这一点的完整代码示例吗?我需要从 UI 应用程序安装服务应用程序,请告诉我该怎么做?
    • 关注我的回答中的主题,它解释了很多理论,并指向其他主题以获得更多示例/理论。我没有时间为任何人复制/粘贴代码,我几乎没有时间在这里 atm 冲浪 :)
    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多