如何同时运行后台服务应用程序和 UIApplication
Posted
技术标签:
【中文标题】如何同时运行后台服务应用程序和 UIApplication【英文标题】:How can run background service application and UIApplication same time 【发布时间】:2011-04-24 09:42:44 【问题描述】:我想同时运行后台服务应用程序和 UIApplication。
是否可以在同一个项目中创建两者或需要创建单独的单独项目。
实际上我对如何在事件线程中调用或启动后台服务感到困惑。
【问题讨论】:
【参考方案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 冲浪 :)以上是关于如何同时运行后台服务应用程序和 UIApplication的主要内容,如果未能解决你的问题,请参考以下文章
手机和电脑的后台程序是否与前台程序同时运行 只是被前台覆盖了