8

Soy un principiante con syncAdapter. He visto el google IO video (conferencia de presentación here), y he leído 2 tutoriales (here y here) al respecto.¿Cómo configurar correctamente el adaptador de sincronización?

También probé el código de los tutoriales y es frustrante que no pueda entender cómo implementar el adaptador de sincronización correctamente.

lo que creo es que algunas de las preferencias (ya sea en el manifiesto o en los archivos xml) son incorrectas, pero no puedo averiguar por qué.

he tenido éxito al permitir agregar la cuenta de sincronización y también mostrarla con su ícono. Sin embargo

, estoy frente a algunos problemas extraños que no puedo entender por qué se producen:

  1. permitir que la cuenta para sincronizar. el usuario final no puede presionar el botón de sincronización. tampoco parece sincronizarse automáticamente aunque intenté agregar algo al agregar la cuenta.

  2. después de agregar la cuenta, el usuario final puede ver una extraña descripción de la cuenta: "res/xml/authenticator.xml". no estoy seguro de dónde se establece.

  3. al hacer clic en la cuenta (después de que se agregó), veo una lista vacía (que es probable, ¿cómo agrego más elementos allí? En el futuro, también necesito sincronizar con Facebook y Gmail, pero . no puede caso de tener éxito con la adición de mi propio ContentProvider a esta lista

no necesito a hacer la autorización real, de modo que sólo tiene que utilizar el siguiente código en su lugar dentro de la actividad que se extiende desde AccountAuthenticatorActivity:

accountManager.addAccountExplicitly(account, PASSWORD, null); 
final Intent intent = new Intent(); 
intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, USERNAME); 
intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, accountType); 
setAccountAuthenticatorResult(intent.getExtras()); 
setResult(RESULT_OK, intent); 
finish(); 

También intenté establecer la sincronización automática nd habilite la sincronización utilizando lo que se describe here.

Respuesta

0

Acerca de 1) sí, no se puede sincronizar si no hay una conexión a Internet. La razón es que (aunque no existe una definición adecuada de un adaptador de sincronización), un adaptador de sincronización es un componente que se supone debe usarse para sincronizar una red troncal con sus datos locales. Si no hay conexión, no tiene sentido iniciar la sincronización. En realidad, esto es cierto solo en teoría porque tuve que desarrollar un adaptador sybc incluso si no había una base de datos central.

Lo que hice fue escribir un componente que se llama por el adaptador de sincronización cuando se activa y por mi propia aplicación cuando es necesaria la sincronización incluso si no hay conexión

+0

Tener en considerstion que el marco manejar de forma automática la solicitud de sincronización múltiple Si desarrolla su propio componente, debe hacerlo usted mismo. – kingston

+0

no entiendo el último comentario. también, ¿es posible comunicarse con otros adaptadores de sincronización (con el permiso correcto, por supuesto), por ejemplo, para obtener las credenciales necesarias para obtener datos de ellos o comunicarse con sus servidores? la pregunta está en otra publicación que he escrito recientemente: http://stackoverflow.com/questions/11532257/android-use-syncadapter-to-sync-with-gmail-data-and-facebook-data –

+0

Sobre mi comentario anterior . Supongamos que el usuario hace clic dos veces en el botón de sincronización muy rápidamente. El marco intenta evitar enviar la solicitud dos veces. Si los componentes de la aplicación que activan la sincronización pueden hacer varias solicitudes, debe hacer algo similar.Por ejemplo, en mi aplicación si aparece una segunda solicitud mientras la sincronización continúa, retiro la sincronización actual y comienzo una nueva. Si se produce una tercera solicitud mientras estoy abandonando la primera y comenzando la segunda, ignoro la tercera solicitud, etc. Debe implementar su propia estrategia para optimizar la sincronización – kingston

Cuestiones relacionadas