Сервис запускает действия из разных приложений

Я разработал два приложения (может быть больше в будущем), которые используют один и тот же сервис. Когда я запускаю одно из приложений, они должны запустить службу (если она еще не запущена) и отправить имя действия, чтобы сообщить службе, что приложение доступно.

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

Проблема сейчас в том, как я запускаю сервис.

Я уже пробовал 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.

Другие вопросы по тегам