Запустить снова уже запущенный сервис? - PullRequest
2 голосов
/ 14 февраля 2012

У меня есть прослушивающий приемник, называемый PACKAGE_ADDED, а другой прослушивающий приемник называется BOOT_COMPLETED.Приемник вещания bootcompleted запускает мой сервис. Когда новое приложение установлено, я хочу отправить сообщение своему сервису. Первое, что пришло мне в голову, - это снова запустить сервис с

intent.setAction("NEW_APP_INSTALLED"); 
startService(intent);
* 1006.* без остановки службы и проверьте значение intent.getAction() в методе service.onStart().Если результат NEW_APP_INSTALLED, тогда звоните newAppInstalled(). Я не думаю, что это элегантное решение.

Является ли повторный запуск службы проблемой?И что происходит, когда моя активность связывается с ним через ipc(aidl) во время извлечения данных, а новое приложение, установленное для широковещательного приемника, запускает его снова?И, наконец, как лучше всего решить мою проблему?

1 Ответ

2 голосов
/ 14 февраля 2012

Снова и снова запускается служба?

И, наконец, как лучше всего решить мою проблему?

Это прекрасно для вас, чтобы позвонить startService на уже работающем сервисе. И вы можете сделать это так, как вы предлагали, или иметь две разные службы (одна для загрузки, одна для new_app) или вы можете зарегистрировать BroadcastReceiver в службе после ее запуска, но это будет неэффективно, потому что если вы попробуйте отправить ему сообщение, и оно еще не запущено, оно не получит сообщение .. Я предпочитаю один сервис, как вы предложили, и используйте startService.

И что происходит, когда моя деятельность связывает его через ipc (AIDL), извлекающий данные а новое приложение, установленное вещательным приемником, запускает его снова?

Ну, я ничего не знаю об AIDL, правда. Это может помочь. На этой странице указано «Большинство приложений не должны использовать AIDL для создания связанной службы». Это потому, что это делает многопоточность необходимой и делает ее более сложной.

Пожалуйста, дайте мне знать, если я не смог ответить на ваше удовлетворение - хотя я не могу подробно остановиться на AIDL, потому что я ничего не знаю об этом.

...