2011-04-26 21 views
5

Estaba usando cancelRequest() desde mi SyncAdapter, justo antes de que salga de su hilo, pero luego decidí que solo estaba destinado a ser utilizado por otra entidad (UI) que desea cancelar una sincronización en curso (tomar demasiado tiempo, oops, etc.)¿Cómo señalar Sync-Complete al Android SyncManager?

Ahora mi sincronización cree que siempre hay una solicitud pendiente, que utilizo para ignorar las nuevas solicitudes.

La otra cosa que voy es un hilo de escucha en un servicio que está a la escucha de cambios en el ContactsContract.AUTHORITY para que pueda iniciar una sincronización de mi agregación.

ACTUALIZACIÓN: Este hilo de escucha tiene filtraciones. Estoy emitiendo un .stop() cuando termine con esto, sin embargo, hay un controlador que creo que se mantiene vivo y evita que el servicio se detenga.

me gustaría enviar SyncResults a alguna entidad (es decir, la SyncManager) que realiza un seguimiento de este tipo de cosas pendientes, reciclar, etc.

¿Qué me falta?

Respuesta

1

Puede usar el SyncResult Esta clase se utiliza para comunicar los resultados de una operación de sincronización al SyncManager. Sobre la base de los valores aquí la SyncManager determinará la disposición de la sincronización y si es o no una nueva operación de sincronización necesita ser programada en un futuro

+1

OK, el doc es vago y ver la fuente de Google no fue muy esclarecedor. He buscado código de muestra para usar esta clase con SyncAdapter, pero no fue exitoso. ¿Puedes mostrar un código de muestra? Puedo instanciar y modificar, pero no sé cómo asociarme con Account y enviarlo a SyncManager. ¿Tiene sentido? – mobibob

+1

He intentado configurar SyncResult en mi aplicación, pero no veo el efecto. – mobibob

10

Para más detalles sobre la respuesta de shunty con un ejemplo:

Aquí es un example de configurar el SyncResult. Solo lo uso para establecer el número de excepciones en el campo de estadísticas. El resultado que veo es que se muestra un icono de error para ese elemento de sincronización en la pantalla de sincronización de Cuentas &.

+1

OK - mi confusión (preocupación) es que la configuración de SyncResult, que es un parámetro de "entrada", la programación de efectos secundarios. Esperaba que al concluir mi onPerformSync, pudiera enviar el SyncResult al SyncManager o el CP, etc. para que se grabara. – mobibob

+1

Estoy de acuerdo, es una mala cosa que hacer, pero así es como fue diseñado para ser utilizado aquí. – maxpower47

Cuestiones relacionadas