J'ai besoin de démarrer un service au démarrage. J'ai beaucoup cherché. Ils parlent de Broadcastreceiver. Comme je suis nouveau dans le développement Android, je n'ai pas eu une image claire des services sur Android. Veuillez fournir du code source.
android
autostart
bootcompleted
harish
la source
la source
startForeground()
dans votre service. Sinon, Android et ses utilisateurs tueront votre service comme un gaspillage d'espace et vous obtiendrez des commentaires désagréables sur l'Android Market. La plupart des situations où vous pensez que vous souhaitez qu'un service démarre au moment du démarrage, il est préférable de l'utiliserAlarmManager
pour que votre service puisse s'exécuter périodiquement plutôt qu'en continu .AlarmManager
après le redémarrage, vous devez suivre des étapes très similaires (la différence étant dans le contenu de laonReceive
méthode)Réponses:
Créez un
BroadcastReceiver
et enregistrez-le pour recevoir ACTION_BOOT_COMPLETED . Vous avez également besoin de l' autorisation RECEIVE_BOOT_COMPLETED .Lire: Écouter et diffuser des messages globaux et définir des alarmes
la source
Votre récepteur:
Votre AndroidManifest.xml:
la source
De http://www.jjoe64.com/2011/06/autostart-service-on-device-boot.html
la source
android.intent.category.LAUNCHER
!La plupart des solutions publiées ici manquent un élément important: le faire sans verrou de réveil risque de voir votre service être tué avant la fin du traitement. J'ai vu cette solution dans un autre fil, en répondant ici également.
Étant donné que WakefulBroadcastReceiver est obsolète dans l'api 26, il est recommandé pour les niveaux d'API inférieurs à 26
Vous devez obtenir un verrou de réveil. Heureusement, la bibliothèque de support nous donne une classe pour faire ceci:
puis, dans votre service, assurez-vous de libérer le verrou de réveil:
N'oubliez pas d'ajouter l'autorisation WAKE_LOCK et d'enregistrer votre récepteur dans le manifeste:
la source
vous devez vous inscrire à BOOT_COMPLETE ainsi qu'à REBOOT
la source
Enregistrez également votre service créé dans le manifeste et utilise-permission comme
puis en braod cast Reciever appelez votre service
la source
Enregistrez d'abord un récepteur dans votre fichier manifest.xml:
puis écrivez une émission pour ce récepteur comme:
la source
Pour redémarrer le service dans
Android O
ou plus ie OS> 28 Utilisez ce code VERSION KOTLIN 1) Ajouter l'autorisation dans le manifeste2) Créez un
Class
et étendez-le avecBroadcastReceiver
3) Déclarez dans le fichier manifeste comme celui-ci sous la balise d'application
la source
Veuillez vérifier JobScheduler pour les API ci-dessus 26
WakeLock était la meilleure option pour cela, mais il est obsolète au niveau de l'API 26.Veuillez vérifier ce lien si vous considérez les niveaux d'API supérieurs à 26
https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html# startWakefulService (android.content.Context,% 20android.content.Intent)
Ça dit
comme il est dit cosider JobScheduler
https://developer.android.com/reference/android/app/job/JobScheduler
si c'est pour faire quelque chose que pour commencer et pour le garder vous pouvez recevoir l'émission ACTION_BOOT_COMPLETED
S'il ne s'agit pas de pls de premier plan, vérifiez si un service d'accessibilité pourrait le faire
une autre option consiste à démarrer une activité à partir du récepteur de diffusion et à la terminer après le démarrage du service dans onCreate (), car les versions plus récentes d'Android ne permettent pas de démarrer les services à partir des récepteurs
la source