effidevFlutter · Edge de Cloudflare · Optimización de costes en la nube
Español

Ejecución Estabilizada de Tareas en Segundo Plano en Flutter con WorkManager y BGTaskScheduler

Arquitectura de tareas en segundo plano con WorkManager y BGTaskScheduler en Flutter

Las optimizaciones de batería de Android e iOS suelen suspender o cancelar las tareas en segundo plano en las aplicaciones Flutter.

Explicamos cómo utilizar el paquete WorkManager, aislar callbacks con @pragma('vm:entry-point'), configurar Info.plist y depurar mediante comandos de CLI.

Puntos Clave

  • Mecanismos del Sistema: Android utiliza WorkManager con restricciones y restricciones de red; iOS depende de BGTaskScheduler con límites de ~30 segundos.
  • Separación de Isolates: Las tareas se ejecutan en un isolate independiente. Es obligatorio anotar el punto de entrada con @pragma('vm:entry-point').
  • Restricciones en iOS: iOS no garantiza la ejecución a horas fijas; depende del estado de la batería y patrones de uso.
  • Depuración por CLI: Permite forzar la ejecución de tareas usando ADB y LLDB sin esperar.

1. Código de Ejemplo

import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';

@pragma('vm:entry-point')
void callbackDispatcher() {
  Workmanager().executeTask((taskName, inputData) async {
    return Future.value(true);
  });
}

Conclusión

El uso correcto de WorkManager e Isolates garantiza una sincronización en segundo plano sólida en ambas plataformas.