L'exécution en arrière-plan dans le développement mobile — essence, limitations et principes de fonctionnement

Auteur : IT Sectr Publié le : 2026-03-26 Temps de lecture : 9 min

Background Execution est un mécanisme qui permet d'exécuter le code d'une application mobile lorsqu'elle n'est pas au premier plan. Sans ce mécanisme, le système suspend l'application lors de sa réduction. Selon Apple, 2026, iOS limite le temps d'arrière-plan à 30 secondes, tandis qu'Android offre des scénarios plus flexibles via WorkManager et Foreground Service.

Points Clés

  • Background Execution — exécution du code de l'application lorsqu'elle est réduite ou inactive.
  • iOS — limites strictes : 30 secondes pour les tâches, Background Modes et App Refresh rigoureux.
  • Android — WorkManager, Foreground Service, Scheduling et mode Doze avec différentes restrictions.
  • Consommation d'énergie — la principale raison des limitations : les processus en arrière-plan réduisent l'autonomie de la batterie.
  • Confidentialité — à partir d'Android 8 et iOS 13, les systèmes exigent des autorisations explicites pour le travail en arrière-plan.

Qu'est-ce que l'exécution en arrière-plan dans les applications mobiles ?

Background Execution est la capacité d'une application à continuer d'exécuter du code après que l'utilisateur l'a réduite ou a basculé vers une autre application. Sans mécanismes spéciaux, l'OS mobile met l'application à l'état Suspendu (Suspended) quelques secondes après être passée en arrière-plan, libérant le processeur et la mémoire pour les applications actives.

États de l'application en arrière-plan

Une application mobile passe par plusieurs états de cycle de vie : Foreground (actif), Background (en arrière-plan), Suspended (suspendu) et Terminated (terminé). Background est le seul état dans lequel l'application peut exécuter du code sans interface visible. iOS et Android définissent la durée et les opérations disponibles dans cet état différemment.

Principaux cas d'utilisation

L'exécution en arrière-plan est nécessaire pour la synchronisation des données, le téléchargement de contenu, le traitement des notifications Push, la géolocalisation en arrière-plan et la lecture audio. La synchronisation est le scénario le plus courant : l'application envoie des données au serveur ou télécharge des mises à jour sans intervention de l'utilisateur.

  • Synchronisation — chargement et déchargement de données lors du changement d'état du réseau.
  • Géolocalisation — suivi de localisation dans les trackers de fitness et les navigateurs.
  • Média — lecture audio et vidéo en arrière-plan (musique, podcasts).
  • Notifications — traitement des notifications Push et locales.
  • Téléchargement — téléchargement de fichiers volumineux (podcasts, vidéos) en arrière-plan.

Pourquoi les OS mobiles limitent l'exécution en arrière-plan

Les limitations de l'exécution en arrière-plan sont dues à trois facteurs : la consommation d'énergie, les performances de l'appareil et la confidentialité de l'utilisateur. Le processeur et les modules radio (Wi-Fi, données cellulaires) consomment le plus d'énergie — chaque processus en arrière-plan réduit l'autonomie de la batterie.

Consommation d'énergie et autonomie

Les études de Google montrent que les applications qui exécutent des tâches en arrière-plan toutes les 5 minutes réduisent l'autonomie de la batterie de l'appareil de 20 à 30 % par jour. Même les opérations optimisées en arrière-plan avec une fréquence d'une fois par heure ont un impact notable s'il y a plus de deux de ces applications.

RAM et performances

Chaque application en arrière-plan occupe de la RAM. En cas de pénurie de RAM, le système décharge les applications de la mémoire, ce qui provoque un redémarrage au retour de l'utilisateur. iOS utilise l'algorithme Jetsam — un mécanisme de terminaison forcée des processus en arrière-plan lorsque la limite de mémoire est dépassée. Android utilise LMK (Low Memory Killer) avec un principe similaire.

Confidentialité de l'utilisateur

À partir d'Android 10 et iOS 13, le système exige que les applications déclarent le but du travail en arrière-plan. Android a introduit des restrictions sur le lancement des Broadcast Receivers en arrière-plan. iOS exige de spécifier le Background Mode dans les Capabilities du projet. L'utilisateur peut désactiver l'exécution en arrière-plan pour toute application dans les paramètres.

OSVersionRestrictionImpact
Android8.0IMPLICIT_BROADCAST interdit67 % des Broadcast en arrière-plan cassés
Android9.0Doze amélioréAppels réseau restreints
Android12+Foreground Service restreintLancement depuis l'arrière-plan interdit
iOS7+Background App RefreshFenêtres de mise à jour périodiques
iOS13+BGTaskSchedulerPlanification au lieu d'exécution

Exécution en arrière-plan sur Android : WorkManager et Foreground Service

Android fournit plusieurs mécanismes pour l'exécution en arrière-plan, chacun résolvant une catégorie différente de tâches. WorkManager est l'API recommandée pour les tâches différées et périodiques. Foreground Service est pour l'exécution immédiate avec une notification visible. JobScheduler est une alternative de bas niveau à WorkManager.

WorkManager — Solution universelle

WorkManager fait partie d'Android Jetpack, fournissant une exécution de tâches en arrière-plan avec garantie d'achèvement même après le redémarrage de l'appareil. L'API choisit le moment d'exécution optimal en tenant compte de l'état du réseau, du niveau de batterie et du mode Doze. WorkManager est compatible avec l'API 14+ et remplace les obsolètes AlarmManager et JobScheduler.

Foreground Service — Pour les opérations longues

Lorsqu'une application doit effectuer une tâche visible pour l'utilisateur (lecture de musique, enregistrement de géolocalisation), Foreground Service est utilisé. Le service affiche une notification persistante dans la barre d'état et a une priorité plus élevée — le système ne le terminera pas avant la fin de la tâche. À partir d'Android 13, l'autorisation POST_NOTIFICATIONS est requise.

Mode Doze et optimisation de la batterie

À partir d'Android 6.0, l'appareil entre en mode Doze lorsqu'il est inactif. Dans ce mode, les opérations réseau, la synchronisation et JobScheduler sont différées. WorkManager s'adapte automatiquement à Doze — les tâches sont exécutées pendant la prochaine fenêtre de maintenance lorsque l'appareil sort du sommeil pour la maintenance.

Exécution en arrière-plan sur iOS : Background Tasks et App Refresh

iOS adopte une approche plus stricte de l'exécution en arrière-plan. Background App Refresh est le mécanisme principal pour la mise à jour périodique des données. BGTaskScheduler est l'API pour planifier des tâches en fonction de l'état du système. Pour les opérations longues, les Background Modes sont disponibles : audio, location, voip, fetch et processing.

Background App Refresh

Background App Refresh permet à l'application de se réveiller toutes les 15 à 30 minutes pour synchroniser les données. Le temps de réveil dépend du comportement de l'utilisateur — le système analyse à quelle fréquence il ouvre l'application. Les utilisateurs peuvent désactiver cette fonction pour des applications individuelles dans Réglages — Général — Background App Refresh.

BGTaskScheduler — Approche moderne

À partir d'iOS 13, BGTaskScheduler a remplacé les obsolètes performFetch et beginBackgroundTask. L'application enregistre des tâches avec un identifiant et un intervalle minimal, et le système détermine le moment d'exécution optimal. Les tâches sont divisées en deux types : BGProcessingTask (longues, 10+ minutes) et BGAppRefreshTask (courtes, jusqu'à 30 secondes).

Limites de temps d'exécution

iOS alloue un temps limité pour l'exécution des tâches en arrière-plan — jusqu'à 30 secondes pour BGAppRefreshTask et jusqu'à 10 minutes pour BGProcessingTask. Lorsque la limite est dépassée, le système termine la tâche de force. Le développeur doit appeler le gestionnaire d'expiration (expiration handler) pour sauvegarder les résultats intermédiaires.

Exemples de code : Android WorkManager

Voyons une implémentation pratique de l'exécution en arrière-plan sur Android avec WorkManager. Un exemple de synchronisation de données toutes les 8 heures avec connaissance de l'état du réseau. WorkManager garantit l'exécution de la tâche même après le redémarrage de l'appareil.

kotlin
class SyncWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
    override fun doWork(): Result {
        return try {
            syncDataToServer()
            Log.d("Sync", "Données synchronisées")
            Result.success()
        } catch (e: Exception) {
            Result.retry()
        }
    }
}

// Exécuter la tâche périodique toutes les 8 heures
val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .setRequiresCharging(false)
    .build()

val syncRequest = PeriodicWorkRequestBuilder<SyncWorker>(
    8, TimeUnit.HOURS
).setConstraints(constraints).build()

WorkManager.getInstance(context).enqueue(syncRequest)

Foreground Service avec notification

Pour les opérations longues visibles pour l'utilisateur, utilisez Foreground Service. Un exemple de téléchargement de fichier avec progression dans la notification. Le service appelle startForeground() avec une notification qui ne peut pas être supprimée. Lorsque le téléchargement est terminé — stopForeground(STOP_FOREGROUND_REMOVE).

kotlin
class DownloadService : Service() {
    override fun onStartCommand(intent: Intent?, flags: Int, id: Int): Int {
        startForeground(NOTIFICATION_ID, createNotification())
        downloadFile()
        stopForeground(STOP_FOREGROUND_REMOVE)
        stopSelf()
        return START_NOT_STICKY
    }
    private fun createNotification(): Notification {
        return NotificationCompat.Builder(this, CHANNEL_ID)
            .setContentTitle("Télécharger le fichier")
            .setSmallIcon(android.R.drawable.ic_download)
            .build()
    }
}

Exemples de code : iOS BGTaskScheduler

Sur iOS, l'exécution en arrière-plan est configurée via BGTaskScheduler. Un exemple d'enregistrement et d'exécution d'une tâche de mise à jour de contenu. L'application doit enregistrer l'identifiant de la tâche dans Info.plist et appeler submit lorsque la tâche doit être planifiée.

swift
import BackgroundTasks

func registerBackgroundTask() {
    BGTaskScheduler.shared.register(
        forTaskWithIdentifier: "com.app.refresh",
        using: nil
    ) { task in
        self.handleAppRefresh(task: task as! BGAppRefreshTask)
    }
}

func scheduleAppRefresh() {
    let request = BGAppRefreshTaskRequest(
        identifier: "com.app.refresh"
    )
    request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
    try? BGTaskScheduler.shared.submit(request)
}

func handleAppRefresh(task: BGAppRefreshTask) {
    scheduleAppRefresh()
    task.expirationHandler = {
        // Sauvegarder les données intermédiaires
        cacheCurrentState()
    }
    fetchLatestData {
        task.setTaskCompleted(success: true)
    }
}

Background Processing Task

Pour les opérations longues (nettoyage du cache, traitement des données), utilisez BGProcessingTask. Le système accorde jusqu'à 10 minutes pour l'exécution. Ne s'exécute que lorsque l'appareil est en charge et connecté au Wi-Fi. Nécessite un identifiant séparé dans Info.plist et un enregistrement via register(forTaskWithIdentifier:).

swift
func scheduleProcessing() {
    let request = BGProcessingTaskRequest(
        identifier: "com.app.cleanup"
    )
    request.requiresExternalPower = true
    request.requiresNetworkConnectivity = true
    request.earliestBeginDate = Date(timeIntervalSinceNow: 24 * 60 * 60)
    try? BGTaskScheduler.shared.submit(request)
}

Comparaison des approches Android et iOS

Android et iOS diffèrent fondamentalement dans leur philosophie d'exécution en arrière-plan. Android offre des outils flexibles avec un plus grand contrôle mais exige du développeur de choisir la bonne API. iOS limite les capacités mais garantit des performances stables et une autonomie pour l'utilisateur.

CritèreAndroidiOS
API recommandéeWorkManagerBGTaskScheduler
Temps max de tâcheIllimité (Foreground Service)30 s / 10 min (processing)
Tâches périodiquesOui, via PeriodicWorkRequestOui, via BGAppRefreshTask
Garantie d'exécutionOui, même après redémarrageNon — le système décide quand
Accès réseau en arrière-planLimité par le mode DozeVia URLSession avec background config
Géolocalisation en arrière-planForeground Service + autorisationBackground Mode location + NSLocation
Audio en arrière-planForeground Service avec notification médiaBackground Mode audio + AVAudioSession

Quand choisir Android WorkManager

WorkManager est optimal pour les tâches qui doivent être accomplies indépendamment de l'état de l'application : synchronisation de données, envoi d'analyses, traitement de files d'attente. L'API garantit l'exécution même après l'extinction de l'appareil — la tâche est replanifiée après le démarrage.

Quand choisir iOS BGTaskScheduler

BGTaskScheduler convient aux tâches que le système peut effectuer à tout moment opportun : télécharger du nouveau contenu, mettre à jour les widgets, vider le cache. Ne convient pas pour les opérations urgentes — le système retarde la tâche si l'appareil est en Doze ou a une batterie faible.

Foire Aux Questions

Quelle est la différence entre Background Execution et Background Modes ?

Background Execution est un concept général décrivant tout code s'exécutant en arrière-plan. Background Modes est un mécanisme spécifique d'iOS qui permet à une application d'effectuer certains types d'opérations en arrière-plan : audio, géolocalisation, VoIP, fetch. Android utilise une approche similaire via les types de Foreground Service.

Pourquoi mon application se termine-t-elle après 30 secondes en arrière-plan ?

Sur iOS, c'est la limite standard pour BGAppRefreshTask. Le système termine la tâche de force lorsque la limite est atteinte. Sur Android, une situation similaire se produit lorsque l'application n'utilise pas WorkManager ou Foreground Service — un Service normal est terminé par le système après être passé en arrière-plan.

Comment garantir l'exécution d'une tâche sur les deux plateformes ?

Sur Android, utilisez WorkManager — il garantit l'exécution même après redémarrage. Sur iOS, l'exécution ne peut pas être garantie — le système décide quand exécuter la tâche. La seule façon de garantir l'exécution est d'utiliser Background Modes (audio, location) avec un indicateur visible pour l'utilisateur.

Comment vérifier si l'exécution en arrière-plan est autorisée ?

Sur iOS, appelez UIApplication.shared.backgroundRefreshStatus — statut .available, .denied ou .restricted. Sur Android, utilisez PowerManager.isIgnoringBatteryOptimizations() pour vérifier l'exemption d'optimisation de la batterie. Pour WorkManager, aucune vérification n'est nécessaire — l'API gère elle-même les restrictions du système.

Quelles alternatives à l'exécution en arrière-plan existent ?

Les notifications Push sont le principal mécanisme pour déclencher des actions sans code en arrière-plan. Sur iOS, PushKit est disponible pour la VoIP et Silent Push pour la mise à jour des données. Sur Android — High Priority FCM et Notification Trampoline. Les WebSockets via Foreground Service sont une alternative pour les applications en temps réel.

Résumé

  • Background Execution — mécanisme d'exécution de code lorsque l'application est réduite, essentiel pour la synchronisation, le téléchargement et les notifications.
  • Android offre WorkManager (exécution garantie), Foreground Service (tâches visibles longues) et les restrictions du mode Doze.
  • iOS utilise BGTaskScheduler (planification), Background App Refresh (mises à jour périodiques) et Background Modes pour les médias et la géolocalisation.
  • Consommation d'énergie — la principale raison des limitations : les processus en arrière-plan non optimisés réduisent l'autonomie de la batterie de 20 à 30 %.
  • Confidentialité — les deux plateformes exigent des autorisations explicites (Android POST_NOTIFICATIONS, iOS Background Modes) et une notification à l'utilisateur.
  • WorkManager est la seule API avec garantie d'exécution après redémarrage ; BGTaskScheduler repose sur les décisions du système.
  • Utilisez Foreground Service sur Android et Background Modes sur iOS pour les opérations longues visibles dans la barre d'état.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi