Должен ли я использовать Android: Process = ": Remote" в моем приемнике? - PullRequest
67 голосов
/ 30 ноября 2010

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

android: process =":remote" 

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

1 Ответ

161 голосов
/ 11 декабря 2010

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

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

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

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

...