Servicio de copia de seguridad Android – cuándo y con qué frecuencia de copia de seguridad?

Quiero hacer una copia de seguridad de los datos de mi aplicación mediante el servicio de copia de seguridad de Android , pero me preocupa el uso de la red. Tengo cerca de 500KB de datos que necesita ser cargado para cada operación de reserva. No mucho, pero si la copia de seguridad se realiza 10 veces al día, puede llegar fácilmente a 5 MB.

Mi pregunta es, ¿cuándo y con qué frecuencia Android decide realizar copia de seguridad? La documentación sólo menciona "en un momento oportuno en el futuro" después de llamar a dataChanged() . No explica qué condiciones constituyen un "momento oportuno".

Puede solicitar una operación de copia de seguridad en cualquier momento llamando a dataChanged() . Este método notifica al Administrador de copia de seguridad que desea hacer una copia de seguridad de sus datos utilizando el agente de copia de seguridad. El Administrador de copia de seguridad llama al método onBackup() su agente de copia de seguridad en un momento oportuno en el futuro.

Hay dos partes para su pregunta:

  1. Cuando
  2. Con qué frecuencia

Comencemos con # 2, con qué frecuencia . Creo que la documentación responde suficientemente a esto. Cada vez que la aplicación llama al método dataChanged() , existe la posibilidad de realizar una copia de seguridad. Por lo tanto, sería prudente limitar la frecuencia de las llamadas a este método. Depende de usted cómo manejar esto. Un acercamiento que usted puede ser que lo considere para llamar solamente esto para los cambios importantes / importantes de los datos en su app. Es decir, no lo llaman para cambios en las preferencias del usuario (como el color de fondo, por ejemplo), sino que lo llaman para cualquier tipo de datos transaccionales.

En cuanto a # 1, cuando : Eso es más difícil de responder exactamente. La documentación es noncommittal sobre esto. Esto le da a Android la libertad de cambiar este algoritmo, sin violar las expectativas de los desarrolladores. Creo que es razonable asumir lo siguiente: es probable que la copia de seguridad ocurra rápidamente, probablemente en el momento en que las condiciones sean apropiadas. Si no sucedió "pronto", entonces no sería un servicio muy útil, ¿no? Probablemente hay algunas condiciones simples que espera Android (sólo una suposición, pero esto podría estar disponible hilos, conexión de red disponible con ninguna otra actividad de red). Tenga en cuenta que la documentación indica que " se realizará una copia de seguridad utilizando el transporte que esté habilitado en el dispositivo ". Parece que está diseñado para hacer que la copia de seguridad ocurra lo antes posible.

Ive dove más adelante en la investigación de la Android Backup Manager Service y descubrió lo siguiente:

  1. Según "Requesting Backup Section" en http://developer.android.com/guide/topics/data/backup.html "Si llama a dataChanged () varias veces consecutivas, antes de que Backup Manager solicite una copia de seguridad de su agente, Agente todavía recibe sólo una llamada a onBackup (). "

Interpreto esto como cada llamada de DataChanged () en nuestra aplicación notifica al servicio de gestor de copia de seguridad mediante transporte. El servicio de gestor de copia de seguridad sólo realizará UNA llamada a OnBackup () del Agente de copia de seguridad de la aplicación, incluso si se llama a DataChanged varias veces antes de que el Servicio de gestor de copia de seguridad responda cuando lo desee.

  1. De acuerdo con este probador (también he realizado una prueba de frecuencia de copia de seguridad ahora): https://advancedweb.hu/2014/12/09/practical_measurement_of_the_android_backup_manager/ El servicio de Backup Manager responde cada hora (también lo probé en mis pruebas) Como al menos un DataChanged () se llamó entre la hora desde la última copia de seguridad de datos.
  • Android BackupAgent nunca se llama
  • ¿Cómo prueba el comportamiento de copia de seguridad completa de Android 6.0?
  • Android backup / restore: cómo hacer una copia de seguridad de una base de datos interna?
  • Aplicación de fondo sin ui
  • Android Backup Manager sólo funciona en Transporte local
  • SharedPreferencesBackupHelper restauración automática no funciona
  • Copia de seguridad de las bases de datos en la nube android:
  • Copia de seguridad / restauración de preferencias compartidas android
  • ¿Cuál es el nombre de archivo utilizado por defecto las preferencias compartidas?
  • Android: preservar o eliminar archivos creados por la aplicación al desinstalar
  • BackupManager no llama al servicio de transporte de copia de seguridad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.