2010-11-30 4 views
61

У меня есть BroadcastReceiver, который называется каждый так часто, и я заметил, многие люди используютДолжен ли я использовать android: process = ": remote" в моем приемнике?

android: process =":remote" 

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

+0

В каком контексте (мероприятие, сервис и т. Д.) Определяется получатель? – Pentium10 2010-11-30 09:15:27

+0

Получатель определен в манифесте, он вызывается из утилиты AlarmManager от android. – Jason 2010-12-01 05:32:08

ответ

146

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^