Tareas en segundo plano en desarrollo móvil: qué son, tipos y cómo funcionan

Autor: IT Sectr Publicado: 2026-03-22 Tiempo de lectura: 10 min

Carga de datos, sincronización de contenido, envío de analíticas — muchas tareas no requieren la participación activa del usuario. Sin embargo, los dispositivos móviles limitan el trabajo en segundo plano para ahorrar batería y mantener el rendimiento. Las tareas en segundo plano (background tasks) son mecanismos que permiten a una aplicación ejecutar código cuando el usuario no la está viendo. En este artículo analizaremos WorkManager, BGTaskScheduler, Foreground Service y las particularidades de Doze Mode. Más información en la documentación oficial de WorkManager.

Puntos clave

  • WorkManager — el estándar para tareas en segundo plano en Android (Jetpack)
  • BGTaskScheduler — la API moderna para tareas en segundo plano en iOS (iOS 13+)
  • Foreground Service — para tareas que el usuario ve (música, GPS)
  • Doze Mode y App Standby — modos de ahorro de energía que limitan el trabajo en segundo plano
  • En ambas plataformas, el sistema limita la ejecución en segundo plano; el desarrollador debe elegir la API correcta
  • JobScheduler — API heredada para Android 5+; se recomienda migrar a WorkManager

¿Qué son las tareas en segundo plano?

Una tarea en segundo plano es cualquier código que se ejecuta cuando la aplicación no está en primer plano (pantalla activa). Puede incluir: sincronización periódica de datos con el servidor, descarga de archivos grandes, procesamiento de notificaciones push, seguimiento de geolocalización, actualización de widgets. Cada plataforma tiene sus propias restricciones en el trabajo en segundo plano: iOS es más estricto (10–30 minutos de tiempo en segundo plano), Android es más flexible pero ha endurecido las reglas desde la versión 9.

La arquitectura de las tareas en segundo plano se basa en tres niveles: (1) tareas inmediatas — se ejecutan ahora mismo (Foreground Service); (2) tareas diferidas — se ejecutan cuando las condiciones son adecuadas (WorkManager, BGTaskScheduler); (3) tareas periódicas — se repiten en un intervalo determinado. Elegir el nivel correcto determina si la tarea se completará a tiempo y si provocará el rechazo de la aplicación en la tienda.

En ambas plataformas, Google/Apple recomiendan encarecidamente usar APIs declarativas en lugar de gestionar hilos directamente en segundo plano. WorkManager en Android y BGTaskScheduler en iOS permiten al sistema distribuir óptimamente el trabajo en segundo plano entre las aplicaciones, agrupando tareas para ahorrar energía. En IT Sectr, siempre comenzamos el diseño de la arquitectura en segundo plano analizando los requisitos de frecuencia y urgencia de las actualizaciones.

Tareas en segundo plano en iOS (Background Fetch, BGTaskScheduler)

iOS proporciona varios mecanismos para el trabajo en segundo plano. Background Fetch — actualización periódica de contenido con un intervalo determinado por el sistema (no por el desarrollador). La aplicación obtiene una ventana de ~30 segundos para descargar nuevos datos. Background Fetch se activa mediante Capabilities → Background Modes → Background Fetch y se implementa en AppDelegate: application(_:performFetchWithCompletionHandler:).

BGTaskScheduler es la API moderna para iOS 13+, que reemplaza Background Fetch. El desarrollador registra una tarea con un identificador, y el sistema la ejecuta cuando las condiciones son adecuadas. BGAppRefreshTask — para actualizaciones cortas de contenido; BGProcessingTask — para tareas largas (limpieza de caché, sincronización de base de datos). Las tareas se registran al iniciar la aplicación y el sistema programa su ejecución teniendo en cuenta el estado de la batería, la red y la actividad del usuario.

Background Modes — una lista de modos que permiten el trabajo en segundo plano para escenarios específicos: Audio (reproducción en segundo plano), Location (GPS), VoIP (llamadas mediante PushKit), BLE (conexión a dispositivos Bluetooth), Processing (tareas largas mediante BGTaskScheduler). Cada modo requiere justificación durante la revisión de App Store. Usar modos sin necesidad real es una causa común de rechazo de la aplicación.

Significant Location Change — un mecanismo para aplicaciones que no necesitan geolocalización constante pero necesitan saber sobre movimientos significativos del usuario (más de 500 metros). El sistema activa la aplicación cuando cambia la torre de telefonía móvil. Este mecanismo ahorra significativamente batería en comparación con el GPS constante.

Tareas en segundo plano en Android (WorkManager, JobScheduler, Foreground Service)

Android ofrece el conjunto más rico de APIs para tareas en segundo plano, pero desde la versión 8.0 (API 26), las reglas se han vuelto más estrictas. WorkManager es la solución recomendada por Google para todos los tipos de tareas en segundo plano. WorkManager garantiza la ejecución de la tarea incluso después de reiniciar el dispositivo (mediante BootReceiver) y admite cadenas de tareas, LiveData/Flow observables y compatibilidad con versiones anteriores hasta API 14.

WorkManager usa Worker — una clase base con el método doWork(). Constraints define las condiciones de ejecución: NetworkType.CONNECTED, BatteryNotLow, StorageNotLow. PeriodicWorkRequest — para tareas periódicas con un intervalo mínimo de 15 minutos. WorkManager se adapta automáticamente a Doze Mode y App Standby, agrupando tareas en ventanas de mantenimiento. Ejemplo de un Worker simple:

kotlin
class SyncWorker(
    context: Context,
    params: WorkerParameters
) : CoroutineWorker(context, params) {

    override suspend fun doWork(): Result {
        return try {
            val repository =
                Injection.provideRepository(applicationContext)
            repository.syncData()
            Result.success()
        } catch (e: Exception) {
            Result.retry()
        }
    }
}

// Запланировать задачу
val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .build()

val syncRequest = OneTimeWorkRequestBuilder<SyncWorker>()
    .setConstraints(constraints)
    .build()

WorkManager.getInstance(context)
    .enqueue(syncRequest)

JobScheduler — una API más antigua (Android 5+, API 21). Programa tareas con condiciones especificadas (red, carga, inactividad). Limitación: no admite reinicio del dispositivo (necesita BootReceiver) y no tiene estado observable. JobScheduler es adecuado para tareas simples en proyectos heredados; para proyectos nuevos, use WorkManager.

Foreground Service — un servicio que el usuario ve a través de una notificación persistente (ongoing notification). Se usa para: reproducción de música, seguimiento GPS, descarga de archivos grandes. Foreground Service tiene alta prioridad — el sistema no lo matará cuando falte memoria. A partir de Android 13, se requiere el permiso FOREGROUND_SERVICE_SPECIAL_USE para algunos tipos. Una alternativa es WorkManager con ForegroundServiceOption (tareas largas).

AlarmManager — para tareas que deben ejecutarse a una hora exacta (alarma, recordatorio). AlarmManager puede despertar el dispositivo de Doze Mode (setAlarmClock). No se recomienda para sincronización regular debido al alto consumo de energía. Para tareas periódicas, use WorkManager, y AlarmManager solo cuando la hora exacta sea crítica.

Escenario iOS Android
Actualización periódica de contenidoBGAppRefreshTask (BGTaskScheduler)WorkManager (PeriodicWorkRequest)
Tarea larga en segundo planoBGProcessingTaskWorkManager + ForegroundService
Reproducción de audioBackground Audio ModeForeground Service
Seguimiento GPSSignificant Location Change / Background LocationForeground Service + FusedLocationProvider
VoIP / LlamadasPushKit + CallKitConnectionService + Foreground Service
Hora exacta (alarma)UNNotificationRequest (calendar)AlarmManager
Procesamiento de push (segundo plano)Notification Service ExtensionFirebaseMessagingService (onMessageReceived)

Doze Mode y App Standby

Doze Mode es un modo de ahorro de energía en Android que afecta la ejecución de tareas en segundo plano. Introducido en Android 6.0 (API 23). Cuando el dispositivo no se está cargando, la pantalla está apagada y el dispositivo está inmóvil, Doze Mode bloquea las solicitudes de red, aplaza JobScheduler y WakeLock. Periódicamente, Doze abre ventanas de mantenimiento — intervalos cortos en los que las aplicaciones pueden ejecutar tareas diferidas. Desde Android 7.0 (API 24), Doze se activa cuando la pantalla está apagada, no solo cuando está completamente inmóvil.

App Standby — un modo en el que las aplicaciones no utilizadas se ponen en espera. Si una aplicación no tiene una notificación activa y no se ha abierto durante varios días, se coloca en un Standby Bucket: activo, working, frequent, rare. Cuanto menos se usa la aplicación, más estrictas son las restricciones: las solicitudes de red se aplazan, la sincronización se bloquea, JobScheduler no se ejecuta.

WakeLock — un mecanismo que mantiene el dispositivo despierto (evita que se duerma). Se usa para completar operaciones importantes. WakeLock debe liberarse después de completar la tarea, de lo contrario la batería se agotará en pocas horas. WakeLock no funciona en Doze Mode — el sistema lo ignora. Trabajar con WakeLock en Android 8+ requiere el permiso WAKE_LOCK y una gestión adecuada del ciclo de vida.

En IT Sectr, consideramos Doze Mode y App Standby en la etapa de diseño. WorkManager maneja automáticamente estos modos, pero para Foreground Service se debe prever el manejo correcto de las transiciones a Doze. Se recomienda probar el trabajo en segundo plano en dispositivos reales con el modo de ahorro de energía activado y después de períodos prolongados de inactividad.

Consejos prácticos

Al diseñar tareas en segundo plano, siga estos consejos. 1. Use siempre WorkManager para proyectos nuevos de Android. Resuelve problemas de compatibilidad, Doze Mode y reinicio del dispositivo. 2. En iOS, prefiera BGTaskScheduler en lugar de Background Fetch para iOS 13+. 3. Use Foreground Service solo cuando la tarea realmente requiera una notificación visible. 4. No abuse de WakeLock — agota la batería y puede provocar el rechazo de la aplicación. 5. Pruebe las tareas en segundo plano en Doze Mode: adb shell dumpsys deviceidle force-idle. 6. Siempre verifique la finalización de la tarea mediante registro y analíticas. 7. Recuerde los límites: iOS da ~30 segundos para Background Fetch y ~unos minutos para BGProcessingTask. Android WorkManager no garantiza el tiempo exacto de ejecución.

Preguntas frecuentes

¿En qué se diferencia Background Service de Foreground Service en Android?

Background Service se ejecuta sin una notificación visible y puede ser eliminado por el sistema en cualquier momento. Foreground Service debe mostrar una notificación persistente (ongoing notification) y tiene mayor prioridad. Foreground Service se usa para reproducción de música y seguimiento GPS.

¿Qué es Doze Mode y cómo afecta a las tareas en segundo plano?

Doze Mode es un modo de ahorro de energía de Android que deshabilita el acceso a la red y aplaza JobScheduler/WakeLock cuando el dispositivo no está en uso. WorkManager se adapta a Doze Mode automáticamente.

¿Cómo ejecutar una tarea en segundo plano en iOS?

En iOS, las tareas en segundo plano se ejecutan mediante Background Fetch (actualizaciones periódicas), BGTaskScheduler (tareas diferidas) o Background Modes (audio, VoIP, BLE, ubicación). BGTaskScheduler es la API moderna para iOS 13+, que reemplaza Background Fetch.

WorkManager o JobScheduler: ¿cuál elegir?

WorkManager es la solución recomendada por Google para todas las tareas en segundo plano en Android. JobScheduler es una API más antigua con capacidades limitadas. WorkManager admite cadenas de tareas, LiveData/Flow observables y compatibilidad con versiones anteriores hasta API 14.

¿Qué es App Standby?

App Standby es un modo de Android en el que las aplicaciones no utilizadas se ponen en estado de espera: las solicitudes de red se aplazan, la sincronización se pausa. Si una aplicación no se usa durante varios días, Android la coloca en un Standby Bucket (activo, working, frequent, rare).

Resumen

  • WorkManager — solución universal para tareas en segundo plano en Android; se adapta automáticamente a Doze Mode
  • BGTaskScheduler — API moderna para iOS 13+ (BGAppRefreshTask, BGProcessingTask)
  • Foreground Service — para tareas visibles al usuario con notificación persistente
  • Doze Mode y App Standby — obligatorios a considerar; WorkManager los maneja automáticamente
  • JobScheduler y AlarmManager — para proyectos heredados; en proyectos nuevos use WorkManager
  • iOS restringe el trabajo en segundo plano más estrictamente que Android — téngalo en cuenta al diseñar
  • Pruebe siempre las tareas en segundo plano en dispositivos reales con modo de ahorro de energía

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto