¿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?

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.

  • ¿Hay alguna manera de recibir una notificación cuando el usuario apaga el dispositivo?
  • Broadcast reciever correr en el hilo principal?
  • Android.net.wifi.WIFI_STATE_CHANGED no se está transmitiendo
  • Direccionamiento explícito de una intención a un receptor de difusión dinámica
  • Receptor de difusión para detectar el inicio de la aplicación
  • Android BroadcastReceiver en el inicio - sigue funcionando cuando la actividad está en segundo plano
  • Cómo actualizar la interfaz de usuario en un BroadcastReceiver
  • No se puede detectar cuando se responde la llamada saliente en Android
  • Android Whatsapp Inicio de llamada Receptor de difusión
  • Android <receptor> - BroadcastReceiver no se llama
  • ¿Por qué llamar a setResult en BroadcastReceiver?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.