Options des tâches de transfert de données en arrière-plan

De nombreuses applications doivent transférer des données en arrière-plan. Cette page vous aide à trouver l'approche adaptée à vos besoins.

Cas d'utilisation de la migration

Cette section décrit certaines situations courantes dans lesquelles les applications doivent être transférées. depuis ou vers l'appareil, et vous aide à choisir l'outil adapté actuelle.

Transférer des données sur le réseau

Si le transfert a été initié par l'utilisateur et que vous devez conserver son compte informé de la progression du transfert, utilisez le transfert de données initié par l'utilisateur API. Sinon, utilisez WorkManager ou un type de service de premier plan approprié.

Si vous devez planifier un téléchargement, vous pouvez également utiliser DownloadManager. DownloadManager gère les autorisations et se charge de relancer les téléchargements après des échecs, un redémarrage de l'appareil, et les changements de connectivité. Cependant, DownloadManager n'offre pas tous les les fonctionnalités de débogage et de test disponibles dans WorkManager et JobScheduler

Transférer des données depuis ou vers un appareil local

Utilisez une API spécifique si possible (comme l'appareil associé) responsable) ; Sinon, utilisez un premier plan connectedDevice Google Cloud.

Effectuer une courte tâche critique

Utilisez un service de premier plan shortService.

Traitement de fichiers (par exemple, transfert de données vers ou depuis une carte SD, redimensionnement de contenu, ou chiffrement ou déchiffrement de données)

Si la tâche peut s'effectuer en moins de trois minutes, utilisez un shortService service de premier plan. Sinon, utilisez WorkManager.

Utiliser les API de transfert de données déclenchées par l'utilisateur

Si votre application doit transférer des données vers un serveur distant, vous pouvez utiliser la nouvelles API de transfert de données déclenchées par l'utilisateur. Ces API sont appropriées si le ce qui suit est vrai:

  • L'utilisateur a lancé le transfert de données
  • Vous devez informer l'utilisateur de la progression du transfert de données
  • Si le système interrompt le transfert, cela nuit à l'expérience utilisateur.

Si l'une de ces conditions n'est pas remplie, vous devez utiliser WorkManager. à la place.

Par exemple, une application multimédia peut permettre aux utilisateurs de télécharger des albums à lire localement. Si un veut télécharger une playlist et la lire immédiatement, vous pouvez utiliser les API de transfert de données déclenchées par l'utilisateur. D'un autre côté, si l'utilisateur souhaite playlist téléchargée pour la mettre à jour régulièrement en arrière-plan sans que l'utilisateur WorkManager serait un meilleur choix.

Pour en savoir plus, consultez la documentation sur la migration des services de premier plan vers tâches de transfert de données déclenchées par l'utilisateur.

Utiliser WorkManager

Dans la plupart des cas, WorkManager est la meilleure option lorsque vous devez planifier du travail. Vous devez concevoir les tâches de manière à ce qu'elles puissent être interrompues ou différées par le système. Pour en savoir plus, consultez la documentation de WorkManager.

Voici quelques remarques qui pourront vous être utiles si vous effectuez une migration à partir d'un premier plan vers WorkManager:

  • Si vous devez exécuter le travail dès que possible, vous pouvez planifier un une demande de tâche accélérée. Cette option est particulièrement utile planifier le travail en réponse à une diffusion, une alarme exacte ou message FCM à priorité élevée.
  • Si vous avez besoin que la tâche s'exécute périodiquement, vous pouvez planifier l'exécution périodique professionnel. Une requête de travail périodique vous permet de spécifier environ la fréquence le travail s'exécutera, mais ne garantit pas une heure précise. Cela permet au pour planifier les demandes de travail de différentes applications afin d'équilibrer les sur l'appareil.
  • Vous devez définir des contraintes de travail pour indiquer pour exécuter votre job. Par exemple, si votre application doit télécharger ressources non urgentes, vous pouvez spécifier que le job doit s'exécuter pendant l'appareil est en charge et connecté à un réseau illimité. WorkManager peut puis exécuter votre job à un moment où la charge sur le système est équilibrée.
  • WorkManager est libre d'annuler et de relancer une tâche si nécessaire. Par exemple : l'utilisateur peut éteindre l'appareil pendant l'exécution d'une tâche ; le système peut puis relancez le job lorsque l'appareil est à nouveau disponible. Assurez-vous de concevoir et tester votre flux de travail pour vous assurer que le cycle d'annulation et de nouvelle tentative fonctionne correctement.

Utiliser un type de service de premier plan plus spécifique

Si vous ne pouvez pas passer à une autre méthode d'exécution en arrière-plan, vous pouvez ont besoin d'utiliser un service de premier plan. Dans ce cas, vous devez trouver un à utiliser à la place de dataSync. Étant donné que votre code utilise déjà service de premier plan, cette migration est simple. il vous suffit de choisir le type de service de premier plan approprié, et assurez-vous que votre application respecte pour répondre aux exigences du service.

Comme toujours, lorsque vous envisagez d'utiliser un service de premier plan, déterminez s'il existe une API alternative plus adaptée à votre utilisation .

Utiliser un service de premier plan court

Si votre application doit effectuer une tâche courte et critique, un shortService au premier plan peut être la meilleure option. Voici quelques cas où un shortService service de premier plan peut être approprié:

  • L'utilisateur lance une action (telle que la synchronisation des données sur le serveur) et vous voulez pour s'assurer que l'opération se termine, même si l'utilisateur envoie immédiatement le l'application en arrière-plan.
  • Enregistrement des informations en mémoire sur un espace de stockage persistant.
  • Chiffrer ou déchiffrer des informations

Pour en savoir plus, consultez la documentation sur shortService.

Utiliser un service de premier plan sur un appareil connecté

Si vous devez transférer des données vers un autre appareil local, vous pouvez utiliser un Service de premier plan connectedDevice. Voici quelques situations courantes où vous pourriez avoir besoin de le faire:

  • Communiquer avec un accessoire Bluetooth, comme un casque ou une montre connectée
  • Transférer des données vers un appareil connecté localement, par une connexion USB, NFC, ou une connexion Internet locale

Toutefois, dans ces situations, vous pourrez peut-être utiliser l'appareil associé de service pour se connecter à l'appareil au lieu d'utiliser un service de premier plan. Comme toujours, si une API spécifique est disponible pour votre cas d'utilisation, est généralement un meilleur choix que d'utiliser un service de premier plan.

Ressources supplémentaires

Pour en savoir plus sur ce changement apporté aux services de premier plan, consultez les ressources suivantes : ressources supplémentaires: