Opciones de tareas en segundo plano de transferencia de datos

Muchas apps necesitan transferir datos en segundo plano. Esta página te ayuda a encontrar el enfoque correcto para tus necesidades.

Casos de uso de migración

Esta sección describe algunas situaciones comunes en las que las apps necesitan transferir desde o hacia el dispositivo, y te ayuda a elegir la herramienta adecuada para tu de la situación actual.

Transferencia de datos por la red

Si el usuario inició la transferencia y usted debe conservarlo informada sobre el progreso de la transferencia, usa la transferencia de datos iniciada por el usuario APIs. De lo contrario, usa WorkManager o una el tipo adecuado de servicio en primer plano.

Si necesitas programar una descarga, también puedes usar DownloadManager. DownloadManager administra el y se encarga de reintentar las descargas después de fallas, reinicios del dispositivo y cambios de conectividad. Sin embargo, DownloadManager no ofrece todos los de depuración y prueba que están disponibles en WorkManager y JobScheduler.

Transferencia de datos hacia o desde un dispositivo local

Usar una API específica si hay una disponible (como el dispositivo complementario administrador); De lo contrario, usa un elemento connectedDevice en primer plano servicio.

Completar una tarea crítica y breve

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 se puede completar en menos de tres minutos, usa un shortService. servicio en primer plano. De lo contrario, usa WorkManager.

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

Si tu aplicación necesita transferir datos a un servidor remoto, puedes utilizar el nuevas APIs de transferencia de datos iniciadas por el usuario. Estas APIs son apropiadas si los lo siguiente es verdadero:

  • El usuario inició la transferencia de datos.
  • Debes mantener notificado al usuario sobre el progreso de la transferencia de datos
  • Si el sistema interrumpe la transferencia, es perjudicial para la experiencia del usuario

Si no se cumple alguna de estas condiciones, deberás usar WorkManager. en su lugar.

Por ejemplo, una app de música podría permitir que los usuarios descarguen álbumes para reproducirlos de manera local. Si un usuario quiere descargar una playlist y reproducirla de inmediato, recomendamos que la uses las APIs de transferencia de datos iniciadas por el usuario. Por otro lado, si el usuario desea que playlist descargada para actualizarse periódicamente en segundo plano sin que el usuario iniciación, 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.

Usa WorkManager

En la mayoría de los casos, WorkManager es la mejor opción cuando necesitas programar un trabajo. Debes diseñar las tareas de tal manera que puedan interrumpirse o aplazarse por el sistema. Para obtener más información, consulta la documentación de WorkManager.

Estas son algunas notas que pueden resultarte útiles cuando migres de un primer plano a WorkManager:

  • Si necesitas ejecutar el trabajo lo antes posible, puedes programar una solicitud de trabajo acelerada. Esta opción es especialmente útil si estás programar el trabajo en respuesta a una transmisión, una alarma exacta o mensaje de FCM de alta prioridad.
  • Si necesitas que el trabajo se ejecute periódicamente, puedes programar eventos del trabajo. Una solicitud de trabajo periódica te permite especificar aproximadamente la frecuencia con la que se ejecutará, pero no garantiza un tiempo específico. Eso le permite a la para programar solicitudes de trabajo de distintas apps y equilibrar las demandas en el dispositivo.
  • Debes definir restricciones de trabajo para especificar y las circunstancias necesarias para ejecutar tu trabajo. Por ejemplo, si tu app necesita descargar recursos que no son urgentes, puedes especificar que el trabajo se ejecute mientras El dispositivo se está cargando y está conectado a una red no medida. WorkManager puede y, luego, ejecutarás tu trabajo en un momento que equilibra 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 está ejecutando un trabajo; el sistema puede y, luego, reintentar el trabajo cuando el dispositivo vuelva a estar disponible. Asegúrate de diseñar y prueba tu flujo de trabajo para asegurarte de que el ciclo de cancelación y reintento funcione correctamente.

Usa un tipo de servicio en primer plano más específico

Si no puedes cambiar a otra forma de hacer el trabajo en segundo plano, es posible que aún un servicio en primer plano. En ese caso, deberás encontrar una solución el tipo de servicio que se debe usar en lugar de dataSync. Dado que tu código ya está usando un servicio en primer plano, esta migración es sencilla: solo tienes que elegir el tipo de servicio en primer plano adecuado y asegúrate de que tu app cumpla con los requisitos de tu servicio.

Como siempre, cuando consideras usar un servicio en primer plano, debes Te recomendamos que consideres si existe una mejor API alternativa adaptada a tu uso. para determinar si este es el caso.

Usa un servicio corto en primer plano

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

  • El usuario inicia una acción (como sincronizar datos con el servidor) y quieres para asegurarse de que la operación finalice, incluso si el usuario en segundo plano.
  • Cómo guardar información en la memoria en un almacenamiento continuo.
  • 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 dispositivo conectado

Si necesitas transferir datos a otro dispositivo local, puedes usar un Servicio en primer plano de connectedDevice. Estas son algunas situaciones comunes en los que es posible que debas hacer esto:

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

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

Recursos adicionales

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