Сервис запускает действия из разных приложений
Я разработал два приложения (может быть больше в будущем), которые используют один и тот же сервис. Когда я запускаю одно из приложений, они должны запустить службу (если она еще не запущена) и отправить имя действия, чтобы сообщить службе, что приложение доступно.
Сервис находится в третьем проекте, который реализован в виде библиотеки в приложениях. Служба прослушивает в фоновом режиме событие и запускает одно из приложений.
Проблема сейчас в том, как я запускаю сервис.
Я уже пробовал startService и bindService:
StartService:
Intent intent = new Intent(this.getApplicationContext(), DriverBackgroundListener.class);
intent.putExtra("className", "com.example.testProject.Activity1");
this.startService(intent);
Запускает новую службу для обоих приложений, поскольку служба не находится в одном приложении. Итак, 2 Сервиса работают и ожидают одно и то же событие.
bindService:
Я реализовал это с помощью Messenger. ( https://developer.android.com/guide/components/bound-services.html)
Проблема здесь заключается в том, что Сервис будет работать только в том случае, если к Сервису привязано минимум одно действие. Но мне нужно закончить действие, чтобы пользователь мог нормально использовать устройство. Но это отвяжет службу и закроет ее.
Я также должен запустить Сервис после перезагрузки. Но я думаю, что это сработает, если я создам BroadcastReceiver, который запускает действия после загрузки устройства.
У кого-нибудь есть идеи, как справиться с этим?
Спасибо с наилучшими пожеланиями
Fabian
1 ответ
Если вы запускаете службу, а затем привязываетесь к ней с флагом 0, она все равно будет работать даже после отключения от нее. Вы можете сначала попытаться подключиться к услуге и зарегистрироваться. onServiceConnected()
, а если не начать обслуживание. Также взгляните на AIDL https://developer.android.com/guide/components/aidl.html.