AccountManager no debe ser llamado por una aplicación interactiva, sino por un Adaptador de sincronización. (Un gran tutorial es "¿Has ganado embargo» Escribir un proveedor de Android Sync?" Part 1 y Part 2 que da grandes ejemplos de código, pero que no lo hacen tan gran trabajo de explicar el flujo de datos.) Es como esto:
Desarrolla un ContentProvider que envuelve una base de datos. Crea un SyncAdapter (este es un servicio en segundo plano) para conectarse a un servidor y obtener datos y sincronizar ContentProvider para que coincida con el servidor. Luego, su UI consulta al ContentProvider para mostrar los datos obtenidos. Hay algunos métodos para consultar directamente información específica también, si desea buscar y almacenar en caché los resultados, por ejemplo. Vea Developing RESTful Android Apps para una buena sesión de una hora sobre cómo debería verse el modelo de datos. Ofrecen tres ejemplos de arquitectura, comenzando con una implementación "ingenua" que luego progresa al modelo SyncAdapter apropiado.
En cuanto a la autenticación en sí misma, la forma en que SyncAdapter usa el AccountManager es para obtener un token de autenticación. Este es (a menudo) un gran valor hexadecimal, que se pasa como parte de los encabezados HTML en lugar de un par de nombre de usuario/contraseña. Piense en ello como una clave única de una sesión. La posesión de la clave es una prueba de autenticación y caducan periódicamente. Cuando caducan, vuelves a autenticarte y traes uno nuevo. SyncAdapater le pide a AccountManager un token de autenticación para una combinación específica de tipo de cuenta/nombre de usuario. AccountManager se auths con el servidor (pidiendo al usuario una nueva contraseña si es necesario debido a un cambio) y devuelve el token a SyncAdapter, que lo usa a partir de ese momento.
Si este modelo no es apropiado para su aplicación, debe manejar manualmente el inicio/cierre de sesión en el código de su aplicación. Una especie de dolor, lo sé.
¿Así que finalmente logró manejar el inicio de sesión y me recuerda con el AccountManager? He estado luchando con mi flujo de aplicaciones por eso. Deseo activar AccountAuthenticatorActivity cuando inicio mi aplicación solo si no hay una cuenta en el dispositivo, pero no logro obtener un flujo de "mejores prácticas" para hacerlo correctamente. – CinetiK