service - 在 java blackberry 中运行定期后台服务的最佳方法

标签 service blackberry blackberry-eclipse-plugin blackberry-jde

目标:我想开发一个运行服务/任务/方法的UI 应用程序 定期更新数据库。此服务应在之后启动 定期即使我的应用程序不活跃/可见/用户退出 应用程序。类似于 an Android Service .

我正在使用 BlackBerry Java 7.1 SDK eclipse 插件。

我遇到的选项如下:

1) How to run BlackBerry application in Background

此链接建议我扩展 Application 而不是 UIApplication。但我不能那样做,因为我的应用程序有用户界面

2) Make application go in background

我不希望我的 UI 应用程序进入后台,相反我只希望我的应用程序定期调用该服务。

3) Run background task from MainScreen in BlackBerry?

这个链接建议我运行一个线程,但我不认为如果用户退出我的应用程序那么线程将在后台运行

4) Blackberry Install background service from UI application?

这建议使用 CodeModuleManager ,我不知道它的用法。

请提出实现此目标的最佳方法或提出任何其他更好的方法。

我是黑莓新手,请原谅我的无知。

最佳答案

扩展彼得的回答:

  1. 您需要创建两个类:

    class BgApp extends Applicaton
    class UiApp extends UiApplication
    

    我想您已经创建了扩展 UiApplicaiton 的类。因此,添加另一个扩展 Application 的类。

  2. 然后创建一个扩展 TimerTask 的类并实现其 run 方法以调用更新数据库的方法。

    class UpdateDatabaseTask extends TimerTask
    
  3. 在 BgApp 构造函数中,创建一个 Timer。并使用 schedule(TimerTask, long, long) 方法安排 UpdateDatabaseTask

  4. 定义备用入口点,选中 bgapp 入口点的“不在主屏幕上显示”和“启动时自动运行”复选框。

  5. 使用内置的持久化机制(PersistentStorePersistable 接口(interface))来存储数据是最简单的。即使您使用 RecordStore 或 SQLDb 等任何其他方式,UiApp 和 BgApp 都可以使用访问相同的数据库。由 bgapp 更新的值将由 uiapp 自动访问,反之亦然。

  6. 如果您想从 bgapp 向 uiapp 发送信号(例如,当 bgapp 下载新数据时,您希望 uiapp 立即重新加载数据),发布全局事件 (ApplicationManager.postGlobalEvent()) 下载完成后在显示数据的界面监听(GlobalEventListener接口(interface))。

作为 SDK 的一部分或在 Internet 上搜索,您可以找到其中每一个的代码示例,您会发现很多实现。

关于service - 在 java blackberry 中运行定期后台服务的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18206461/

相关文章:

黑莓全局弹出窗口

java - 在黑莓中将自定义浏览器设置为默认浏览器

c# - nServiceBus UnicastBusConfig.MessageEndpointMappings.Endpoint

.net - 无法构建某些服务 - 在 Worker Service .Net Core 3.1(依赖注入(inject))中验证服务描述符时出错

java - 限制 RESTful 服务的拨出调用数量

android - 如何从广播接收器中注销监听器并停止服务

java - 调试时收到 net_rim_os not found 警告

facebook - OS 7.0 的 Blackberry Facebook sdk 问题

android - 使用 ADT 插件 Eclipse 将 Android 应用程序转换为黑莓