web-dev-qa-db-fra.com

Utilisation du planificateur de tâches dans l'API Android <21

Je cherchais un tutoriel sur la planification par Vogella . Il mentionne le Planificateur de travaux  API introduite dans l'API 21 d'Android. Ma question est la suivante: peut-il être implémenté dans des API inférieures à 21 (Lollipop) mais pas inférieures à la version 3 d'Android (Honeycomb)?

36
Manny265

à partir de maintenant (après I/O 2015), vous pouvez également utiliser le nouveau gestionnaire GcmNetworkManager. Comment l'utiliser et comment cela fonctionne est décrit ici - https://developers.google.com/cloud-messaging/network-manager

Il fait beaucoup de choses intéressantes, car il persiste dans le redémarrage de vos tâches. Sur Lolipop, il utilise JobScheduler, sur les versions antérieures à Lolipop, il utilise sa propre implémentation.

MODIFIER:

Un exemple de code sur son utilisation: https://github.com/jacktech24/gcmnetworkmanager-Android-example

36
filipproch

Il existe une très belle et puissante bibliothèque de planificateurs de jobs d'Evernote. Il utilise la meilleure méthode à chaque niveau de SDK et vous fournit une interface très propre et élégante pour planifier et exécuter des travaux.

15
Greg Ennis

L'approche recommandée pour les appareils pré-Lollipop est d'utiliser le https://github.com/firebase/firebase-jobdispatcher-Android#user-content-firebase-jobdispatcher-

En savoir plus sur https://developer.Android.com/topic/performance/scheduling.html#fjd

Firebase JobDispatcher est un open-source bibliothèque qui fournit une API similaire à JobScheduler dans Android Plate-forme. Firebase JobDispatcher sert de Couche de compatibilité JobScheduler pour les applications ciblant les versions de Android inférieur à 5.0 (API de niveau 21).

Firebase JobDispatcher prend en charge l'utilisation des services Google Play en tant que mise en œuvre pour la répartition des travaux (en cours d'exécution), mais la bibliothèque également vous permet de définir et d'utiliser d'autres implémentations: Par exemple, vous peut décider d'utiliser JobScheduler ou d'écrire votre propre code personnalisé . En raison de cette polyvalence, nous vous recommandons d’utiliser cette Firebase JobDispatcher si votre application cible une version d'Android inférieure à 5.0 (API niveau 21).

Pour plus d'informations sur Firebase JobDispatcher, reportez-vous à son documentation et code source.

12
iMobaio

Il existe quelques méthodes pour exécuter des "travaux" pré-Lollipop.

Comme mentionné, vous pouvez utiliser la bibliothèque JobSchedulerCompat, mais cette bibliothèque présente une différence énorme par rapport à l'API Lollipop par défaut:

On Les tâches Lollipop sont mises en lot et planifiées pour toutes les applications à la fois. Cependant, la bibliothèque n'a pas accès aux données d'autres applications et ne peut donc pas combiner les tâches de deux applications différentes utilisant la bibliothèque.

Une autre option que vous pouvez essayer est l’API AlarmManager. Cette API peut être utilisée pour planifier des travaux, à la différence que AlarmManager ne comporte aucune contrainte autre que le délai d'exécution des travaux.

Depuis KitKat, l’API de AlarmManager met également les travaux en lot s’ils ne sont pas planifiés avec les méthodes "exactes". Avant les tâches KitKat ne sont pas mises en lot.

Si votre objectif est de synchroniser des données, alors l'API Sync-Adapter pourrait être utile: Sync-Adapter

Références: AlarmManager , JobSchedulerCompat

7
Rolf ツ

Selon les dernières API de planification des travaux en arrière-plan, vous devez utiliser WorkManager, actuellement dans Alpha.

WorkManager vous permet de planifier des tâches en arrière-plan qui nécessitent une exécution garantie (que le processus d'application soit actif ou non). WorkManager fournit des fonctionnalités similaires à JobScheduler aux périphériques API 14+, même ceux sans les services Google Play

WorkManager est queryable (observable), supporte fortement les graphiques de travail et une API fluide.

Si vous utilisez JobScheduler, FireBaseJobScheduler et/ou AlarmManager plus BroadcastReceivers, vous devriez envisager d'utiliser WorkManager à la place. Pour en savoir plus, voir Work Manager .

4
Asad

Vous pouvez consulter la bibliothèque JobSchedulerCompat.

Cependant, comme le soulignent les auteurs, il existe une raison pour laquelle JobScheduler est uniquement disponible à partir de Lollipop et des versions ultérieures, alors faites attention à cela. Citant:

Cependant, cette bibliothèque n’a pas été bien testée, je vous conseillerais donc pas en utilisant dans la production en ce moment. Il n'y a aucune garantie que cela ne déchargera pas votre batterie et ne fera pas exploser votre appareil.

4
Sebastiano

Reportez-vous au lien this à propos de la présentation de l’API Android N Preview.

GCMNetworkManager , qui fait partie des services Google Play, qui offre une planification des travaux similaire avec une compatibilité entre les versions héritées d’Android.