¿Puede el servicio de una aplicación Android ejecutarse antes de que el usuario lo inicie?
La aplicación tiene un BroadcastReceiver que escucha un evento de arranque completo y comienza un servicio de fondo para enviar algunos datos a mi servidor HTTP.
Mi pregunta es, si la aplicación nunca es ejecutada por el usuario (sólo instalado), el BroadcastReceiver recibirá el evento de inicio?
- Inicio del servicio desde BroadcastReceiver
- Los datos de referencias de Android Market no se están poblando
- ¿Cómo obtener la lista de todos los BroadcastReceiver (s) registrados para una intención específica?
- Excepción extraña de "Receptor no registrado"
- Android: Cómo detectar la transmisión "Activar el almacenamiento USB"?
- ¿Puedo seguir recibiendo la intención del receptor de difusión después de que la fuerza detuviera mi aplicación en android?
- Cómo usar LocalBroadcastManager?
- Anular el registro de Android Broadcast Receiver en onReceive lanza "Receptor no registrado"
- Activar y desactivar receptor de difusión en el botón de clic
- Android - ¿Cómo utilizar un receptor de radiodifusión local?
- Usando getWindowManager () dentro de BroadcastReceiver
- Android - cómo anular el registro de un receptor creado en el manifiesto?
- LocalBroadcastManager vs Context.registerReceiver (), Context.sendBroadcast (Intent) y Context.unregisterReceiver () son iguales?
A partir de Android 3.1 el usuario tiene que iniciar la aplicación una vez para que reciba la transmisión boot_complete ..
Lo que sigue es del javadoc oficial:
A partir de Android 3.1, el administrador de paquetes del sistema realiza un seguimiento de las aplicaciones que están en un estado detenido y proporciona un medio para controlar su lanzamiento desde los procesos de fondo y otras aplicaciones.
Tenga en cuenta que el estado detenido de una aplicación no es el mismo que el estado detenido de una actividad. El sistema gestiona estos dos estados detenidos por separado.
La plataforma define dos nuevos indicadores de intención que permiten al remitente especificar si se debe permitir que el intento active los componentes en la aplicación detenida.
FLAG_INCLUDE_STOPPED_PACKAGES – Incluye filtros de intención de aplicaciones detenidas en la lista de posibles blancos a resolver en contra. FLAG_EXCLUDE_STOPPED_PACKAGES – Excluir filtros de intenciones de aplicaciones detenidas de la lista de blancos potenciales. Cuando ninguno o ambos de estos indicadores se define en una intención, el comportamiento predeterminado es incluir filtros de aplicaciones detenidas en la lista de blancos potenciales.
Tenga en cuenta que el sistema agrega FLAG_EXCLUDE_STOPPED_PACKAGES a todas las intenciones de difusión. Esto lo hace para evitar que las emisiones de los servicios de fondo inicien inadvertidamente o innecesariamente el lanzamiento de componentes de aplicaciones detenidas. Un servicio o una aplicación de fondo puede anular este comportamiento agregando el indicador FLAG_INCLUDE_STOPPED_PACKAGES a las intenciones de difusión que deberían permitir activar las aplicaciones detenidas.
Las aplicaciones se encuentran en un estado detenido cuando se instalan por primera vez pero aún no se inician y cuando son detenidas manualmente por el usuario (en Administrar aplicaciones).
Enlace javadoc
Echa un vistazo a este blog para más detalles
Sí, el receptor de arranque está registrado para escuchar el arranque, así que si reinicia el dispositivo se disparará, independientemente de si inició la aplicación o no. Del mismo modo, si agrega oyentes NFC a su manifiesto, entonces si alguien pasa una tarjeta NFC, la aplicación reaccionará. El manifiesto es utilizado por Android para reaccionar a lo que haya especificado en él. No depende de si la aplicación se está ejecutando (o se ha ejecutado). Pregunta excelente sin embargo! 🙂
EDITAR como por las otras respuestas y la documentación. Esto ya no es cierto. Perdón por la confusion.