Blackberry - как запустить свой сервис при загрузке телефона? - PullRequest
1 голос
/ 18 сентября 2009

Хочу запустить собственную реализацию сервиса при запуске телефона?

Как этого добиться?

Ответы [ 3 ]

2 голосов
/ 09 октября 2009

Цитата от Как сделать - написать безопасный код инициализации

При запуске системы может потребоваться автоматический запуск приложения для выполнения процедур инициализации, таких как регистрация прослушивателей и получение информации из постоянного хранилища.

Такие процедуры не должны выполняться до тех пор, пока система не закончит основные задачи запуска, такие как проверки безопасности, установление сетевого подключения и другие задачи.

Поэтому приложение должно убедиться, что запуск системы завершен, прежде чем запускать собственный код инициализации, как показано в следующем примере:

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
}
2 голосов
/ 18 сентября 2009

Вам просто нужно установить параметры «Системный модуль» и «Автоматический запуск» в свойствах проекта в JDE Blackberry. Это запустит ваше приложение при загрузке телефона.

0 голосов
/ 30 сентября 2009

Вы можете использовать механизм IPC (своего рода) для обмена данными между «Сервисом» и Приложением. Есть два способа сделать это:

  1. net.rim.device.api.system.RuntimeStore имеет методы для размещения и получения объекта, который идентифицируется уникальным идентификатором (long). Этот идентификатор может быть сгенерирован из среды JDE.
  2. net.rim.device.api.system.ApplicationManager имеет методы, позволяющие публиковать глобальные события, которые могут обмениваться данными (снова идентифицируемыми уникальным идентификатором). Другое приложение должно будет реализовать GlobalEventListener и зарегистрироваться в системе - addGlobalEventListener.

В первом подходе другой объект не уведомляется, когда данные добавляются в хранилище.

...