Должен ли я использовать android: process = ": remote" в моем приемнике?

У меня есть BroadcastReceiver, который называется так часто, и я заметил, что многие люди используют

android: process =":remote" 

в приемнике. Шахта используется для проверки нескольких вещей, и если условия совпадают, активируйте будильник. Мой вопрос в том, следует ли использовать строку, которую я опубликовал выше в своем манифесте? И если да, то в чем преимущества этого?

Ответ 1

Определив ваш ресивер с помощью android:process=":remote", вы в основном запускаете ваш ресивер в другом процессе (= VM). Для типичных случаев использования вам не нужно запускать это в другом процессе, и все, что вы хотите сделать, возможно, может работать нормально локально (в вашем APK-процессе).

Недостатком использования android:process=":remote" является то, что вам нужны дополнительные ресурсы для его запуска (в данном случае отдельный процесс). При этом вы в основном имеете дело с двумя виртуальными машинами, и некоторые шаблоны, такие как одиночные игры, статические поля больше не могут быть разделены между вашим приложением и удаленным сервисом.

Преимущество использования android:process=":remote" заключается в том, что для некоторых случаев использования может быть полезно запустить службу, которая будет продолжать работать (в своем собственном процессе) после завершения работы вашего приложения или если вы хотите удаленно клиентов, чтобы иметь возможность связываться с вашим сервисом. Ваш широковещательный приемник не будет блокировать основной поток ваших приложений при запуске в отдельном процессе при вызове метода onReceive() (однако есть и другие способы его реализации).

Я обнаружил, что большую часть времени для большинства распространенных случаев использования вы можете обойтись без использования android:process=":remote".