Может ли служба распространять данные в основное приложение, например, через LiveData или LocalBroadcastManager, которые могут быть легко переданы в любое место в программе, или мне нужно использовать какой-либо механизм на основе IPC, такой как Intents или .aidl, или любой другой
Таким образом, если для вашей службы объявлено android:process
и если имя, присвоенное этому атрибуту, начинается с двоеточия (':'), то при необходимости создается новый процесс, и службаработает в этом процессе.
Вам необходимо использовать AIDL для связи с этой службой, так как это еще один процесс, когда речь идет об Android, и на Android один процесс не может нормально получить доступ к памяти другого процесса.
Итак, чтобы поговорить друг с другом, им нужно разложить свои объекты на примитивы, которые операционная система сможет понять, и упорядочить объекты через эту границу для вас.
Я надеюсь,Вы скажете, что есть простой способ обмена данными, но я подозреваю, что вы скажете, что, поскольку они находятся в разных процессах, нет простого способа сделать это
Ну, этот способ процесса Androidмодель работает - я боюсь, что еще кто-то может сказать что-то другое
Я хотел бы избежать всех накладных расходов с Intents или .aidl или что-то еще ... Следует также сказать, что естьОсобая причина, по которой я хочу, чтобы сервис был в другом процессе.
То, что у вас есть особая причина для запуска сервиса в другом процессе - это делает аргумент в пользу AIDL еще более сильным, потому что согласно официальным даннымandroid docs,
Использование AIDL необходимо, если вы разрешаете клиентам из разных приложений доступ к вашему сервису дляr IPC и хотите управлять многопоточностью в вашем сервисе.Если вам не нужно выполнять параллельный IPC в разных приложениях, вы должны создать свой интерфейс с помощью Binder или, если вы хотите выполнять IPC, но не должны обрабатывать многопоточность, реализовать свой интерфейс с помощью Messenger.
Может быть, вы подумаете о внедрении Binder или Messenger - если это соответствует деталям реализации вашего конкретного сервиса.