Лучший подход для общения между приложениями, не обращая на них внимания? - PullRequest
7 голосов
/ 30 мая 2019

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

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

1 Ответ

5 голосов
/ 04 июня 2019

Полагаю, ваша мысль о broadcastreceiver вовсе не так уж и плоха: вам не нужно регистрировать broadcastreceiver в манифесте, вы также можете создать их по требованию или даже в композиции с вашим * 1003.*.Но помимо этого есть несколько способов решить вашу проблему:

Подход № 1

Прежде всего вы можете использовать IntentService и PendingIntent дляиметь простое общение, используя ResultReceiver.См. Также этот большой вопрос о переполнении стека для получения дополнительной информации:

связь Android между двумя приложениями

Подход № 2

Ещеуниверсальным подходом может быть использование IntentFilter и схемы для перехвата отправляемых данных.Он также основан на намерениях и может стать решением для вашего сценария, если (!) Вы правильно обработаете перехват данных: в вашем случае, только если он работает.См. Также эту статью для (несколько) краткого примера такого подхода:

https://android -developers.googleblog.com / 2009/11 / integrating-application-with-intets.html .

Подход № 3

И последнее, но не менее важное: используйте общие (но защищенные!) Файлы и другие параметры хранения данных.Это может быть зашифрованный файл и активный слушатель во время работы вашего второго приложения.Возможно, для этого также потребуются другие части других упомянутых опций, например, запущенный IntentService, которым можно управлять с помощью Alarmmanager или JobScheduler.Для таких сценариев я бы рекомендовал официальные документы для Android:

https://developer.android.com/training/secure-file-sharing/setup-sharing.html https://developer.android.com/guide/topics/data/data-storage.html.

Plus: , так как в большинстве случаев выЕсли бы у меня был какой-то «фоновый сервис», я бы порекомендовал вам взглянуть на некоторые подходы, которые предлагает вам Android, поскольку они могли бы полностью изменить подход и возможности, которые могли бы соответствовать:

https://www.bignerdranch.com/blog/choosing-the-right-background-scheduler-in-android/

Короче говоря:

Удачи и держите меня в курсе!;)

...