1

我想在手机启动时启动自己的服务实现?

如何实现?

4

3 回答 3

2

引自How To - 编写安全的初始化代码

应用程序可能需要在系统启动期间自动运行一次以执行初始化例程,例如注册侦听器和从持久存储中检索信息。

在系统完成核心启动任务(例如安全检查、建立网络连接和其他任务)之前,不应执行此类例程。

因此,应用程序应确保在运行自己的初始化代码之前完成系统启动,如下例所示:

class MyApp implements SystemListener {
    public static void main(String[] args) {
        MyApp appInstance = new MyApp();
        // If system startup is still in progress when this
        // application is run.
        if (ApplicationManager.getApplicationManager().inStartup()) {
            appInstance.addSystemListener(appInstance);
        } else {
            appInstance.doStartupWorkLater();
        }
        appInstance.enterEventDispatcher();
    }
    // constructs
    MyApp() {
    }   
    private void doStartupWorkLater() {
        invokeLater(new Runnable() {
            public void run() {
                doStartupWork();
            }
        });
    }  
    private void doStartupWork() {
    }    
    // SystemListener
    public void powerUp() {
        removeSystemListener(this);
        doStartupWork();
    }
    // TODO: other SystemListener methods
}
于 2009-10-09T13:24:29.220 回答
2

您只需要在黑莓JDE的项目属性中设置“系统模块”和“自动启动”选项。这将在手机启动时启动您的应用程序。

于 2009-09-18T15:25:12.410 回答
0

您可以使用 IPC(某种)机制在“服务”和应用程序之间交换数据。有两种方法可以做到这一点:

  1. net.rim.device.api.system.RuntimeStore 具有放置和获取由唯一 id(长)标识的对象的方法。此 ID 可以从 JDE IDE 中生成。
  2. net.rim.device.api.system.ApplicationManager 具有允许发布全局事件的方法,可以交换数据(再次由唯一 ID 标识)。另一个应用程序必须实现 GlobalEventListener 并向系统注册 - addGlobalEventListener。

在第一种方法中,将数据添加到存储时不会通知其他实体。

于 2009-09-30T08:33:36.993 回答