maintenant ce n'est pas possible de créer une tâche planifiée comme pour les SDK précédent libère
WakefulBroadcastReceiver
n'a jamais été la seule option pour cela. Par exemple, mon WakefulIntentService
remonte à 2009. Et the JobIntentService
ajouté à la bibliothèque de support supplante les deux.
Mais comment?
Um, JobScheduler
est couvert de the JavaDocs et elsewhere in the documentation, ainsi que des livres et des cours sur le développement d'applications Android.
Quelle est la solution la plus utile pour les tâches planifiées en arrière-plan de nos jours?
Cela dépend entièrement de la façon dont vous voulez définir "utile", et je ne connais pas votre définition.
D'une manière générale:
Utilisez JobScheduler
si possible
Utilisez setAlarmClock()
sur AlarmManager
si vous écrivez un réveil application
Utilisez les autres set...()
méthodes sur AlarmManager
pour la compatibilité ascendante pour les appareils pré-Android 5.0, peut-être via une bibliothèque wrapper (par exemple,d'Evernote 0)
Utiliser la messagerie push (par exemple, FCM) lorsque cela est possible et si vous êtes en mesure de dépendre de cette solution de messagerie push
est-AlarmManager pas plus utile?
Faire toute sorte de travail de fond périodique « plus utile » est pour certaines définitions de « utile ». Le mode Doze et la veille d'application, introduits dans Android 6.0, rendent fondamentalement le travail de fond périodique peu fiable du point de vue de l'utilisateur.
Ce que je dois implémenter? L'ancienne API et une nouvelle? Ou seulement une solution à jour?
Il est impossible de répondre à cette question dans l'abstrait. Il n'y a rien dans Android 8.0, ou la bibliothèque de support, qui vous empêche d'utiliser AlarmManager
comme vous l'avez été.
Je dois utiliser WakefulBroadcastReceiver pour écouter les modifications apportées à AIRPLANE_MODE, puis désactiver certaines fonctionnalités qui s'exécutent en arrière-plan dans certains SDK tiers, même lorsque l'application est en arrière-plan. Je suis confus comment utiliser Jobscheduler pour écouter le changement AIRPLANE_MODE lorsque mon application est en arrière-plan. –
@srv_sud: Cette action de diffusion n'apparaît pas sur la [liste blanche implicite de diffusion] (https://developer.android.com/guide/components/broadcast-exceptions.html), ce qui peut ne pas fonctionner sur Android 8.0+ de toute façon. Au-delà de cela, je vous recommande de poser une question distincte Stack Overflow concernant vos préoccupations. – CommonsWare
@CommonsWare, vraiment, il n'y a pas de tutoriels sur internet "comment utiliser Jobscheduler au lieu de WakefulBroadcastReceiver" pour attraper les notifications push. Un grand nombre d'exemples pour remplacer Service via JobScheduler qui est démarré par wakefulreceiver mais ce n'est pas la même chose. –