Necesito iniciar un servicio en el momento del arranque. Busqué mucho. Están hablando de Broadcastreceiver. Como soy nuevo en el desarrollo de Android, no obtuve una imagen clara sobre los servicios en Android. Proporcione algún código fuente.
android
autostart
bootcompleted
harish
fuente
fuente
startForeground()
en su servicio. De lo contrario, Android y sus usuarios eliminarán su servicio por ser una pérdida de espacio y obtendrá algunos comentarios desagradables en Android Market. En la mayoría de las situaciones en las que cree que desea que un servicio se inicie en el momento del arranque, es mejor utilizarloAlarmManager
para que su servicio pueda ejecutarse periódicamente en lugar de de forma continua .AlarmManager
después del reinicio, debe seguir pasos muy similares (la diferencia está en el contenido delonReceive
método)Respuestas:
Cree un
BroadcastReceiver
y regístrelo para recibir ACTION_BOOT_COMPLETED . También necesita el permiso RECEIVE_BOOT_COMPLETED .Leer: Escuchar y transmitir mensajes globales y configurar alarmas
fuente
Su receptor:
Su AndroidManifest.xml:
fuente
De http://www.jjoe64.com/2011/06/autostart-service-on-device-boot.html
fuente
android.intent.category.LAUNCHER
!A la mayoría de las soluciones publicadas aquí les falta una pieza importante: hacerlo sin un bloqueo de activación corre el riesgo de que su Servicio se elimine antes de que termine de procesarse. Vi esta solución en otro hilo, respondiendo aquí también.
Dado que WakefulBroadcastReceiver está obsoleto en api 26, se recomienda para niveles de API inferiores a 26
Necesita obtener un bloqueo de activación. Afortunadamente, la biblioteca de soporte nos da una clase para hacer esto:
luego, en su Servicio, asegúrese de liberar el bloqueo de activación:
No olvide agregar el permiso WAKE_LOCK y registrar su receptor en el manifiesto:
fuente
debe registrarse para BOOT_COMPLETE y REBOOT
fuente
También registre su servicio creado en el Manifiesto y use-permiso como
y luego en braod cast Reciever llama a tu servicio
fuente
Primero registre un receptor en su archivo manifest.xml:
y luego escribe una transmisión para este receptor como:
fuente
Para reiniciar el servicio en
Android O
o más, es decir, SO> 28 Use este código VERSIÓN KOTLIN 1) Agregue permiso en el manifiesto2) Cree un
Class
y extiéndalo conBroadcastReceiver
3) Declare en un archivo de manifiesto como este en la etiqueta de la aplicación
fuente
Por favor, consulte JobScheduler para saber si hay apis superiores a 26
WakeLock fue la mejor opción para esto, pero está en desuso en el nivel de API 26. Por favor, consulte este enlace si considera niveles de API superiores a 26
https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html# startWakefulService (android.content.Context,% 20android.content.Intent)
Dice
así que como dice cosider JobScheduler
https://developer.android.com/reference/android/app/job/JobScheduler
si es para hacer algo que para empezar y quedárselo puedes recibir la retransmisión ACTION_BOOT_COMPLETED
Si no se trata de primer plano, compruebe si un servicio de accesibilidad podría funcionar
otra opción es iniciar una actividad desde el receptor de transmisión y finalizarla después de iniciar el servicio dentro de onCreate (), ya que las versiones más nuevas de Android no permiten iniciar servicios desde receptores
fuente