Para que devo usar o AccountManager Android?
4 answers
AccountManager
, SyncAdapter
e ContentProvider
vão juntos.
-
não se pode ter um
SyncAdapter
sem umAccount
noAccountManager
. -
não se pode ter um
SyncAdapter
sem umContentProvider
.
Mas podes:
- usa o
ContentProvider
sem os outros. - use o
AccountManager
sem os outros (mas você Não pode usar umAccountManager
sem umSyncAdapter
antes do Android 2.2 / Froyo API 8)
Com AccountManager
/ SyncAdapter
/ ContentProvider
:
-
AccountManager
dá aos utilizadores um ponto central (configuração > contas) para definir as suas credenciais - o Android decide quando a sincronização pode ser feita via
SyncAdapter
. Isso pode ser bom para otimizar a bateria (nenhuma sincronização é feita quando a rede está em baixo, por exemplo) -
ContentProvider
é uma forma conveniente de partilhar dados entre aplicações Nota: existem outros métodos de comunicação entre processos em Andróide. -
OContentProvider
horários de acesso ao banco de dados em um segmento de plano de fundoAsyncQueryHanlder
ajuda a consulta aContentProvider
em um segmento de plano de fundo, impedindo a Aplicação Não responde (ANR) erros ao não exigir a manipular explicitamente threading. -
ContentProvider
ligações ao observador deContentResolver
: Isto significa que é fácil notificar as vistas quando o conteúdo é alterado
Conclusão : o enquadramento AccountManager
/ SyncAdapter
/ ContentProvider
ajuda se quiseres sincronizar os dados de um recurso web. As implementações Fake / Burras são necessárias na API 7. Também
- Se só quiser armazenar dados, deve considerar um mecanismo mais simples para o armazenamento de dados
- Se só precisar de obter um único recurso, poderá usar um
AsyncTaskLoader
- Se quiser carregar imagens assíncronamente, pode usar bibliotecas especializadas como Square Picasso
- Se você só quiser executar algum código em um com o tempo, poderá considerar um serviço / Alarme
- apenas disponível na API > = 7 (Isto já não interessa)
Finalmente, se utilizar um SyncAdapter
, considere seriamente O envio de mensagens na nuvem de Firebase (anteriormente mensagens no Google Cloud) aka "notificações push" para ter actualizações mais recentes e utilização optimizada da bateria.
A classe AccountManager está integrada nas suas contas telefónicas. Por isso, se seguir todas as guias e o colocar a funcionar correctamente, verá as suas contas no menu "Configuração->contas e sincronizar". De lá você pode personalizá-los ou até mesmo apagá-los. Além disso, o accountManager tem um cache dos bilhetes de autenticação para suas contas. Isto também pode ser usado se você não planeja sincronizar sua conta (tanto quanto eu sei).
Se não quer que as suas contas apareçam nesse menu, não deverá usar o Gestor de contas e guardar os dados das contas noutro local (talvez nas preferências partilhadas) http://developer.android.com/guide/topics/data/data-storage.htmlDe http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/:
A primeira peça do puzzle é: chamou um Autenticador de conta, que define como a conta do Utilizador irá aparecer no "Accounts & Sync" definicao. Execução de uma conta O autenticador necessita de 3 peças: a serviço que devolve uma subclasse de AbstractAccountAuthenticator do método onBind, uma actividade para pedir o utilizador a inserir as suas credenciais, e um ficheiro xml que descreve como a conta deverá procurar quando for mostrada para usuario. Você também precisa adicionar o androide.permissao.AUTENTICAR_ contas Permissão para o seu AndroidManifest.xml.
O {[0] } é bom pelas seguintes razões:
- primeiro é armazenar vários nomes de contas com diferentes níveis de acesso às funcionalidades do aplicativo sob um único tipo de conta. Por exemplo, em um aplicativo de streaming de vídeo, um pode ter dois nomes de conta: um com acesso demo a um número limitado de vídeos e o outro com acesso a um mês inteiro a todos os vídeos. Esta não é a principal razão para usar
Accounts
, no entanto, uma vez que você pode facilmente gerenciar isso em seu app sem a necessidade de esta coisa elegante... - a outra vantagem de usar
Accounts
é livrar-se da autorização tradicional com nome de utilizador e senha cada vez que um recurso autorizado é solicitado pelo utilizador, porque a autenticação ocorre em segundo plano e o utilizador só é pedido a sua palavra-passe em determinada condição, o que eu chegarei a ela mais tarde. - usar a funcionalidade
Accounts
no android também remove a necessidade de definir o tipo de conta própria. Você provavelmente veio em todos os aplicativos que usam as contas do Google para autorização, o que poupa o trabalho de fazer uma nova conta e lembrar suas credenciais para o usuário. -
Accounts
pode ser adicionado independentemente através de Configurações → Contas - a autorização cruzada do utilizador pode ser facilmente gerida usando
Accounts
. Por exemplo, o cliente pode acessar o material protegido ao mesmo tempo em seu dispositivo android e PC sem a necessidade de logins recorrentes.
Do ponto de vista da segurança, a mesma senha em cada pedido para o servidor permite uma possível escuta em conexões não-seguras. A encriptação de senha não é suficiente aqui para evitar o roubo de senha.
- finalmente, uma razão importante para usar o recurso
Accounts
no android é separar as duas partes envolvidas em qualquer negócio dependente deAccounts
, o chamado autenticador e proprietário de recursos, sem comprometer as credenciais do cliente (usuário). Os termos podem parecer vagos, mas não desista até que você deve ler-se o seguinte parágrafo ...
Para colmatar as lacunas acima referidas, foi introduzido OAuth. Como um padrão aberto para autorização, no exemplo acima, OAuth exige que a autorização seja feita pela empresa B (autenticador) por emissão de algum token chamado token de Acesso para os usuários elegíveis (terceiros) e, em seguida, fornecer a Empresa A (proprietário de recursos) com o token. Então, nenhum sinal significa nenhuma elegibilidade.
Elaborei mais sobre isto e mais sobre {[[0]} aqui no meu site .