Many apps need to transfer data in the background. This page helps you find the right approach for your needs.
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 dansWorkManager
etJobScheduler
- 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.- Transcodage de contenus multimédias
Utilisez le nouveau type de service de premier plan
mediaProcessing
.- Effectuer une courte tâche critique
- 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.
Utiliser le nouveau service de premier plan de traitement multimédia
Si vous devez traiter des données multimédias, vous pouvez utiliser le nouveau mediaProcessing
service de premier plan. Ce type de service est disponible si votre application cible Android
15 ou ultérieure. Par exemple, ce type de service est approprié si
votre application doit transcoder le contenu multimédia
d'un format à un autre pour la lecture. Pour
Pour en savoir plus, consultez les
documentation sur les services de premier plan de traitement multimédia.
Ressources supplémentaires
Pour en savoir plus sur ce changement apporté aux services de premier plan, consultez les ressources suivantes : ressources supplémentaires:
- Conseils pour le travail en arrière-plan
- Article de blog: Améliorer la cohérence des tâches en arrière-plan sur Android