Cómo transferir datos mediante adaptadores de sincronización
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Nota: Recomendamos usar WorkManager como la solución más apropiada para la mayoría de los casos prácticos de procesamiento en segundo plano. Consulta la guía de procesamiento en segundo plano para conocer la solución que funciona mejor en tu caso.
La sincronización de datos entre un dispositivo Android y servidores web puede hacer que tu aplicación sea mucho más útil y atractiva para tus usuarios. Por ejemplo, la transferencia de datos a un servidor web representa una copia de seguridad útil, y la transferencia de datos desde un servidor la pone a disposición del usuario, incluso cuando el dispositivo no tiene conexión. En algunos casos, a los usuarios les puede resultar más fácil ingresar y editar sus datos en una interfaz web y, luego, tener esos datos disponibles en sus dispositivos, o tal vez quieran recopilar datos con el paso del tiempo y, luego, subirlos a un área de almacenamiento central.
Si bien puedes diseñar tu propio sistema para realizar transferencias de datos en tu app, debes considerar usar el framework del adaptador de sincronización de Android. Este framework ayuda a administrar y automatizar las transferencias de datos, y coordina las operaciones de sincronización en diferentes apps. Cuando usas este framework, puedes aprovechar varias funciones que no están disponibles para los esquemas de transferencia de datos que diseñas tú mismo:
-
Arquitectura de complementos
-
Te permite agregar código de transferencia de datos al sistema en forma de componentes que admiten llamadas.
-
Ejecución automática
-
Te permite automatizar la transferencia de datos según varios criterios, como cambios en los datos, el tiempo transcurrido o la hora del día. Además, el sistema agrega transferencias que no se pueden ejecutar en una cola y las ejecuta cuando es posible.
-
Verificación automática de red
-
El sistema solo ejecuta tu transferencia de datos cuando el dispositivo tiene conectividad de red.
-
Mejora del rendimiento de la batería
- Te permite centralizar todas las tareas de transferencia de datos de tu app en un solo lugar, de modo que todas se ejecuten al mismo tiempo. La transferencia de datos también se programa junto con las transferencias de datos de otras apps. Estos factores reducen la cantidad de veces que el sistema tiene que encender la red, lo que reduce el uso de batería.
-
Administración de cuentas y autenticación
- Si tu app requiere credenciales de usuario o acceso al servidor, puedes integrar la administración de cuentas y la autenticación en tu transferencia de datos.
En esta clase, se muestra cómo crear un adaptador de sincronización y el Service
vinculado que lo une, cómo proporcionar los otros componentes que te ayudan a conectar el adaptador de sincronización al framework y cómo ejecutar el adaptador de sincronización para que se ejecute de varias maneras.
Nota: Los adaptadores de sincronización se ejecutan de forma asíncrona, por lo que debes usarlos con la expectativa de que transfieran datos de manera regular y eficiente, pero no instantánea. Si necesitas realizar una transferencia de datos en tiempo real, debes hacerlo en un AsyncTask
o un IntentService
.
Lecciones
-
Cómo crear un autenticador de stub
- Obtén información sobre cómo agregar un componente de administración de cuentas que el framework del adaptador de sincronización espera que sea parte de tu app. En esta lección, se muestra cómo crear un componente de autenticación de stub para mayor simplicidad.
-
Cómo crear un proveedor de contenido de stub
- Obtén información sobre cómo agregar un componente de proveedor de contenido que el framework del adaptador de sincronización espera que sea parte de tu app. En esta lección, se asume que tu app no usa un proveedor de contenido, por lo que se muestra cómo agregar un componente de stub. Si ya tienes un proveedor de contenido en tu app, puedes omitir esta lección.
-
Cómo crear un adaptador de sincronización
- Obtén información sobre cómo encapsular tu código de transferencia de datos en un componente que el framework del adaptador de sincronización pueda ejecutar automáticamente.
-
Cómo ejecutar un adaptador de sincronización
- Obtén información sobre cómo activar y programar transferencias de datos con el framework del adaptador de sincronización.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# Transfer data using sync adapters\n\n**Note:** We recommended [WorkManager](/topic/libraries/architecture/workmanager)\nas the recommended solution for most background processing use cases. Please reference the\n[background processing guide](/guide/background) to learn which solution works best for you.\n\n\nSynchronizing data between an Android device and web servers can make your application\nsignificantly more useful and compelling for your users. For example, transferring data to a web\nserver makes a useful backup, and transferring data from a server makes it available to the user\neven when the device is offline. In some cases, users may find it easier to enter and edit their\ndata in a web interface and then have that data available on their device, or they may want to\ncollect data over time and then upload it to a central storage area.\n\n\nAlthough you can design your own system for doing data transfers in your app, you should\nconsider using Android's sync adapter framework. This framework helps manage and automate data\ntransfers, and coordinates synchronization operations across different apps. When you use\nthis framework, you can take advantage of several features that aren't available to data\ntransfer schemes you design yourself:\n\n\nPlug-in architecture\n:\n Allows you to add data transfer code to the system in the form of callable components.\n\n\nAutomated execution\n:\n Allows you to automate data transfer based on a variety of criteria, including data changes,\n elapsed time, or time of day. In addition, the system adds transfers that are unable to\n run to a queue, and runs them when possible.\n\n\nAutomated network checking\n:\n The system only runs your data transfer when the device has network connectivity.\n\n\nImproved battery performance\n:\n Allows you to centralize all of your app's data transfer tasks in one place, so that they\n all run at the same time. Your data transfer is also scheduled in conjunction with data\n transfers from other apps. These factors reduce the number of times the system has to\n switch on the network, which reduces battery usage.\n\n\nAccount management and authentication\n:\n If your app requires user credentials or server login, you can optionally\n integrate account management and authentication into your data transfer.\n\n\nThis class shows you how to create a sync adapter and the bound [Service](/reference/android/app/Service) that\nwraps it, how to provide the other components that help you plug the sync adapter into the\nframework, and how to run the sync adapter to run in various ways.\n\n\n**Note:** Sync adapters run asynchronously, so you should use them with the\nexpectation that they transfer data regularly and efficiently, but not instantaneously. If\nyou need to do real-time data transfer, you should do it in an [AsyncTask](/reference/android/os/AsyncTask) or\nan [IntentService](/reference/android/app/IntentService).\n\nLessons\n-------\n\n\n**[Create a stub authenticator](/training/sync-adapters/creating-authenticator)**\n:\n Learn how to add an account-handling component that the sync adapter framework expects to be\n part of your app. This lesson shows you how to create a stub authentication component for\n simplicity.\n\n\n**[Create a stub content provider](/training/sync-adapters/creating-stub-provider)**\n:\n Learn how to add a content provider component that the sync adapter framework expects to be\n part of your app. This lesson assumes that your app doesn't use a content provider, so it\n shows you how to add a stub component. If you have a content provider already in your app,\n you can skip this lesson.\n\n\n**[Create a sync adapter](/training/sync-adapters/creating-sync-adapter)**\n:\n Learn how to encapsulate your data transfer code in a component that the sync\n adapter framework can run automatically.\n\n\n**[Run a sync adapter](/training/sync-adapters/running-sync-adapter)**\n:\n Learn how to trigger and schedule data transfers using the sync adapter framework."]]