Alternativas a los servicios en primer plano de sincronización de datos

A menudo, hay mejores alternativas para usar en lugar de un servicio en primer plano de dataSync. Con este documento, encontrarás la mejor alternativa para tu caso de uso.

Casos de uso de migración

En esta sección, se describen algunas situaciones comunes en las que las apps podrían estar usando un servicio en primer plano de dataSync y nuestras alternativas recomendadas.

Cómo transferir datos a través de la red
Si el usuario inició la transferencia y necesitas mantenerlo informado sobre su progreso, usa las APIs de transferencia de datos que inicia el usuario. De lo contrario, usa WorkManager.
Transferencia de datos hacia o desde un dispositivo local
Usa una API específica si hay una disponible (como el administrador de dispositivo complementario). De lo contrario, usa un servicio connectedDevice en primer plano.
Transcodificación de contenido multimedia
Usa el nuevo tipo de servicio en primer plano de mediaProcessing.
Completar una tarea breve y crítica
Usa un servicio en primer plano de shortService.
Procesamiento de archivos (por ejemplo, transferir datos hacia o desde una tarjeta SD, cambiar el tamaño del contenido o encriptar o desencriptar datos)
Si la tarea puede completarse en menos de tres minutos, usa un servicio en primer plano shortService. De lo contrario, usa WorkManager.

Cómo usar las APIs de transferencia de datos iniciadas por el usuario

Si tu app necesita transferir datos a un servidor remoto, te recomendamos que uses las nuevas APIs de transferencia de datos iniciadas por el usuario. Estas APIs son adecuadas si se cumple lo siguiente:

  • El usuario comenzó la transferencia de datos
  • Debes mantener al usuario notificado sobre el progreso de la transferencia de datos
  • Si el sistema interrumpe la transferencia, se perjudica la experiencia del usuario

Si no se cumple alguna de estas condiciones, debes usar WorkManager.

Por ejemplo, una app de música podría permitir que los usuarios descarguen álbumes para reproducirlos de forma local. Si un usuario desea descargar una playlist y reproducirla de inmediato, es posible que desees usar las APIs de transferencia de datos iniciadas por el usuario. Por otro lado, si el usuario desea que la playlist descargada se actualice periódicamente en segundo plano sin que el usuario la inicie, WorkManager sería una mejor opción.

Para obtener más información, consulta la documentación sobre cómo migrar servicios en primer plano a tareas de transferencia de datos que inicia el usuario.

Cómo usar WorkManager

En la mayoría de los casos, WorkManager es la mejor opción cuando necesitas programar trabajos. Debes diseñar las tareas de modo que el sistema pueda interrumpirlas o aplazarlas. Para obtener más información, consulta la documentación de WorkManager.

Estas son algunas notas que pueden ser útiles a medida que migras de un servicio en primer plano a WorkManager:

  • Si necesitas ejecutar el trabajo lo antes posible, puedes programar una solicitud de trabajo acelerado. En especial, esta opción es útil si programas el trabajo en respuesta a una transmisión, una alarma exacta o un mensaje de FCM de prioridad alta.
  • Si necesitas que el trabajo se ejecute periódicamente, puedes programar trabajos periódicos. Una solicitud de trabajo periódica te permite especificar aproximadamente la frecuencia con la que se ejecutará el trabajo, pero no garantiza un tiempo específico. Eso permite que el sistema programe solicitudes de trabajo de diferentes apps para equilibrar las demandas del dispositivo.
  • Debes definir restricciones de trabajo a fin de especificar las circunstancias adecuadas para ejecutar tu trabajo. Por ejemplo, si tu app necesita descargar recursos que no son urgentes, puedes especificar que la tarea se ejecute mientras el dispositivo se está cargando y está conectado a una red no medida. Luego, WorkManager puede ejecutar tu trabajo a la vez que balancee la carga en el sistema.
  • WorkManager puede cancelar y reintentar un trabajo si es necesario. Por ejemplo, el usuario puede apagar el dispositivo mientras se ejecuta una tarea y, luego, el sistema puede volver a intentar la tarea cuando el dispositivo vuelva a estar disponible. Asegúrate de diseñar y probar el flujo de trabajo para asegurarte de que el ciclo de cancelación y reintento funcione correctamente.

Cómo usar un tipo de servicio en primer plano más específico

Aunque no puedas cambiar de otra forma de trabajo en segundo plano, es posible que debas usar un servicio en primer plano. En ese caso, deberías encontrar un tipo de servicio apropiado para usar en lugar de dataSync. Dado que tu código ya usa un servicio en primer plano, la migración es sencilla. Solo debes elegir el tipo adecuado de servicio en primer plano y asegurarte de que tu app cumpla con los requisitos de ese servicio.

Como siempre, cuando consideras usar un servicio en primer plano, debes considerar si existe una mejor API alternativa adaptada a tu caso de uso.

Usa un servicio en primer plano de servicio corto

Si tu app necesita realizar una tarea breve y crítica, un servicio en primer plano de shortService puede ser la mejor opción. Estas son algunas situaciones en las que un servicio en primer plano shortService podría ser adecuado:

  • El usuario inicia una acción (como sincronizar datos con el servidor), y tú debes asegurarte de que la operación finalice incluso si el usuario envía inmediatamente la app a segundo plano.
  • Guardar la información de la memoria en almacenamiento persistente
  • Encriptar o desencriptar información

Para obtener información completa, consulta la documentación de shortService.

Cómo usar un servicio en primer plano de un dispositivo conectado

Si necesitas transferir datos a otro dispositivo local, te recomendamos usar un servicio en primer plano de connectedDevice. Estas son algunas situaciones comunes en las que podrías necesitar hacer esto:

  • Comunicación con un accesorio Bluetooth, como auriculares o un reloj inteligente
  • Transferir datos a un dispositivo conectado de forma local, mediante una conexión USB, NFC o una conexión a Internet local

Sin embargo, en estas situaciones, es posible que puedas usar el administrador de dispositivo complementario para conectarte con el dispositivo en lugar de usar un servicio en primer plano. Como siempre, si hay una API con propósito especial disponible para tu caso de uso, esa suele ser una mejor opción que usar un servicio en primer plano.

Cómo usar el nuevo servicio en primer plano de procesamiento de contenido multimedia

Si necesitas procesar datos multimedia, puedes usar el nuevo servicio en primer plano mediaProcessing. Este tipo de servicio está disponible si tu app se orienta a Android 15 o versiones posteriores. Por ejemplo, este tipo de servicio es apropiado si tu app necesita transcodificar contenido multimedia de un formato a otro para su reproducción. Para obtener más información, consulta la documentación del servicio en primer plano de procesamiento de contenido multimedia.

Recursos adicionales

Para obtener más información sobre este cambio en los servicios en primer plano, consulta los siguientes recursos adicionales: