Al definir su receptor con android:process=":remote"
, básicamente ejecuta su receptor en un proceso diferente (= VM). Para casos de uso típicos, no necesita ejecutar esto en un proceso diferente, y lo que sea que quiera hacer probablemente se ejecute perfectamente localmente (en su proceso de APK).
El inconveniente de utilizar android:process=":remote"
es que necesita recursos adicionales para que se ejecute (en este caso, un proceso separado). Al hacerlo, básicamente se trata de 2 VM, y algunos patrones como los singletons, los campos estáticos ya no se pueden compartir entre su aplicación y su servicio remoto.
La ventaja de usar android:process=":remote"
es que para algunos casos de uso, puede ser útil iniciar un servicio que continuará ejecutándose (en su propio proceso) después de que haya cerrado su aplicación, o si desea clientes remotos para poder vincularse a su servicio. Su receptor de difusión no bloqueará el hilo principal de su aplicación cuando se ejecute en un proceso separado al llamar al método onReceive()
(sin embargo, existen otras formas de implementarlo).
He encontrado que la mayoría de las veces, para casos de uso más comunes, puede escaparse sin usar android:process=":remote"
.
¿En qué contexto (actividad, servicio, etc.) está definido el receptor? – Pentium10
el Receptor se define en el manifiesto. Se llama desde la utilidad AlarmManager de Android. – Jason