Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


SyncAdapter & SyncResult

Quiero saber cuál es el comportamiento predeterminado de SyncManager cuando usamos el objeto SyncResult durante la operación onPerformSync()

Por ejemplo, cuando la sincronización está en error debido a IOException ,

  • Actividad de Android bajo Eclipse / ADT con dependencias de proyecto (Error en la resolución de XY)
  • ¿Cómo podemos mostrar la libra y el símbolo del euro en Android TextView?
  • Android: ¿Cómo puedo utilizar la capa de lista y los elementos de forma para dibujar una regla horizontal cuando se establece como fondo?
  • Excluir el dispositivo de prueba del registro de Firebase Analytics
  • Almacenamiento de una clave secreta en Android
  • ¿Hay recomendaciones para los valores de los códigos de solicitud en Android?
  •  syncResult.stats.numIoExceptions++ 

    A continuación, SyncManager debe administrar la sincronización de reenviar hasta que el sistema especifique un retardo.

    ¿Pero cuántas veces la sincronización es volver a llamar si IOException accurs en cada sincronización? ¿Cuál es el retraso predeterminado establecido entre cada sincronización? ¿Es posible definir sus propios comportamientos? ¿Dónde puedo encontrar documentación sobre eso?

  • Resultados de geocodificación sin mostrarlos en un mapa
  • Uso de FLAG_SHOW_WHEN_LOCKED con disableKeyguard () en la pantalla de bloqueo segura de Android
  • Control de la frecuencia de actualización de la pantalla en el dispositivo Android
  • ¿Cómo hacer que el dispositivo Android mantenga una conexión TCP a Internet sin bloqueo de la sesión?
  • El emulador de Android no se inició después de 360 ​​segundos
  • Uso de awt con android
  • 2 Solutions collect form web for “SyncAdapter & SyncResult”

    El objeto SyncResult tiene un campo delayUntil que puede establecer desde su adaptador de sincronización, lo que retrasará cada sincronización siguiente por el número especificado de segundos. Tal vez este es el campo que estás buscando.

    De lo contrario, la sincronización se reprogramará si

    SyncResult.madeSomeProgress() devuelve true – es decir, cierto trabajo fue logrado satisfactoriamente por la sincronización (correspondiente a stats.numDeletes , stats.numInserts > 0 , stats.numUpdates > 0 )

    SyncResult.hasSoftError() devuelve true – ie falló debido a una IOException o porque SyncResult.syncAlreadyInProgress fue true.

    Así que para responder a su pregunta, si IOException s ocurren en CADA sincronización, SyncManager volverá a intentar infinitum – con backoff exponencial.

    La advertencia a esto es que el adaptador de sincronización puede establecer SyncResult.tooManyRetries = true que indicará al SyncManager que la sincronización no se reprograma.

    El tiempo de reintento inicial:

     /** * When retrying a sync for the first time use this delay. After that * the retry time will double until it reached MAX_SYNC_RETRY_TIME. * In milliseconds. */ private static final long INITIAL_SYNC_RETRY_TIME_IN_MS = 30 * 1000; // 30 seconds 

    Puede decirle al framework que deje de volver a intentar la sincronización estableciendo SyncResult#tooManyRetries en true .

    Fuente: SyncManager.java

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.