Я более подробно изучаю атрибут android:process
, когда он определен в service
или receiver
в AndroidManifest.xml
Это цитата из документов :
android: процесс
Имя процесса, в котором должна запускаться служба.Обычно все компоненты приложения выполняются в процессе по умолчанию, созданном для приложения.Он имеет то же имя, что и пакет приложения.Атрибут процесса элемента может установить разные значения по умолчанию для всех компонентов.Но компонент может переопределить значение по умолчанию с помощью своего собственного атрибута процесса, что позволяет распределить приложение между несколькими процессами.
Если имя, назначенное этому атрибуту, начинается с двоеточия (':'), новый процесс, приватныйк приложению, создается, когда это необходимо, и служба запускается в этом процессе.Если имя процесса начинается со строчной буквы, служба будет запускаться в глобальном процессе с таким именем, если у него есть разрешение на это.Это позволяет компонентам в разных приложениях совместно использовать процесс, сокращая использование ресурсов.
При следующих примерах того, как написать службу синхронизации, а также получателя, эти выборки обычно содержат определения манифеста с отдельным именем android:process
.
Вот пример, гдеопределены получатель и служба (: удаленный и : синхронизация )
<receiver android:name="myapp.backgroundAnalysis.BackgroundAlaramReceiver"
android:process=":remote"
>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
<service
android:name="myapp.backgroundCloudSync.SyncService"
android:exported="false"
android:process=":sync">
<intent-filter>
<action android:name="android.content.SyncAdapter"/>
</intent-filter>
...
</service>
Что бы на самом деле произошло, если бы яопустить android:process
от обоих?Я понимаю, что они будут выполняться в процессе по умолчанию, где также выполняется все остальное (Main, Threads? И т. Д.), Но повлияет ли это на поведение получателя и SyncService?
Может ли это повлиять на поведение приложений во время работы или приемник может помешать синхронизации?Я знаю, что служба будет запускаться в главном потоке, но что-то будет зависать или будет задерживаться только тогда, когда запланировано выполнение кода в главном потоке?
(История вопроса связана спроблема в том, что мне нужно запускать операции синхронизации на некотором общем ресурсе из различных объектов (основного приложения, получателя и SyncAdapter), но общий ресурс не может работать в многопроцессорных средах, поэтому я пытаюсь понять последствия возможных обходных путей или решений)