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 enWorkManager
yJobScheduler
- 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.- Transcodificación de contenido multimedia
Usa el nuevo tipo de servicio en primer plano
mediaProcessing
.- Completar una tarea crítica y breve
- 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.
Usa el nuevo servicio en primer plano de procesamiento de contenido multimedia
Si necesitas procesar datos multimedia, puedes usar el nuevo mediaProcessing
.
servicio en primer plano. Este tipo de servicio está disponible si tu app está orientada a Android
15 o una versión posterior. Por ejemplo, este tipo de servicio es adecuado si
tu app necesita transcodificar contenido multimedia de un formato a otro para su reproducción. Para
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 lo siguiente recursos adicionales:
- Orientación sobre el trabajo en segundo plano
- Entrada de blog: Mejora de la coherencia del trabajo en segundo plano en Android