Preciso iniciar um serviço no momento da inicialização. Eu procurei muito. Eles estão falando sobre Broadcastreceiver. Como sou novo no desenvolvimento do Android, não tive uma ideia clara sobre os serviços no Android. Forneça algum código-fonte.
android
autostart
bootcompleted
harish
fonte
fonte
startForeground()
em seu serviço. Caso contrário, o Android e seus usuários eliminarão seu serviço por considerá-lo uma perda de espaço e você receberá alguns comentários desagradáveis no Android Market. Na maioria das situações em que você pensa que deseja que um serviço seja iniciado no momento da inicialização, é melhor usá-AlarmManager
lo para que seu serviço possa ser executado periodicamente, em vez de continuamente .AlarmManager
após a reinicialização, você precisa seguir etapas muito semelhantes (a diferença está no conteúdo doonReceive
método)Respostas:
Crie um
BroadcastReceiver
e registre-o para receber ACTION_BOOT_COMPLETED . Você também precisa da permissão RECEIVE_BOOT_COMPLETED .Leia: Ouvir e transmitir mensagens globais e definir alarmes
fonte
Seu receptor:
Seu AndroidManifest.xml:
fonte
De http://www.jjoe64.com/2011/06/autostart-service-on-device-boot.html
fonte
android.intent.category.LAUNCHER
!A maioria das soluções postadas aqui está perdendo uma peça importante: fazer isso sem um wake lock corre o risco de seu serviço ser interrompido antes de terminar o processamento. Vi essa solução em outro tópico, respondendo aqui também.
Como WakefulBroadcastReceiver foi descontinuado no api 26, ele é recomendado para níveis de API abaixo de 26
Você precisa obter um wake lock. Felizmente, a biblioteca de suporte nos oferece uma classe para fazer isso:
em seguida, em seu serviço, certifique-se de liberar o wake lock:
Não se esqueça de adicionar a permissão WAKE_LOCK e registrar seu receptor no manifesto:
fonte
você deve se registrar para BOOT_COMPLETE e também para REBOOT
fonte
Registre também o serviço criado no Manifesto e use a permissão como
e, em seguida, em braod cast Receptor ligue para seu serviço
fonte
Primeiro, registre um receptor em seu arquivo manifest.xml:
e então escreva uma transmissão para este receptor como:
fonte
Para reiniciar o serviço em
Android O
ou mais, por exemplo, SO> 28 Use este código KOTLIN VERSION 1) Adicionar permissão no manifesto2) Crie um
Class
e amplie-o comBroadcastReceiver
3) Declare no arquivo de manifesto como este na tag do aplicativo
fonte
Por favor, verifique o JobScheduler para apis acima de 26
WakeLock era a melhor opção para isso, mas está obsoleto na API de nível 26. Verifique este link se você considerar os níveis de API acima de 26
https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html# startWakefulService (android.content.Context,% 20android.content.Intent)
Diz
então, como diz cosider JobScheduler
https://developer.android.com/reference/android/app/job/JobScheduler
se for para fazer algo além de começar e mantê-lo, você pode receber a transmissão ACTION_BOOT_COMPLETED
Se não for sobre o primeiro plano, verifique se um serviço de acessibilidade pode servir
outra opção é iniciar uma atividade do broadcast receiver e terminá-la após iniciar o serviço em onCreate (), uma vez que as versões mais recentes do Android não permitem iniciar serviços a partir de receptores
fonte