Your SlideShare is downloading. ×
Sinconização: como resolver?
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Sinconização: como resolver?

373
views

Published on

Palestra apresentada no AndroiDay 2013.

Palestra apresentada no AndroiDay 2013.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
373
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Aocontrário de polling, o SyncAdapternãoé um conceito, mas sim um framework fornecidopelaplataforma Android.Suaprinicipalfunçãoécoordenar as sincronizações de forma eficiente, umavezque tem acessoaosrecursos da plataforma e aoseusestados com maioracurácia.Éimportantedestacarque o SyncAdapteréumaimplementação de polling, mas com melhorescondiçõesparagerenciar as sincronizaçõesumavezqueé um framework da própriaplataforma.Porexemplo, podemosverificarnaimplementação do aplicativo se o dispositivoestáounãoconectado, mas temosdificuldadesem saber a qualidadedessaconexão.Mas eunãopoderiafazerminhaimplementaçãodessesaspectos?Atépoderia, masaideiaévocênãoprecisar se preocupar com essasquestões, umavezque a plataformaconseguedesempenhar com maioreficiência.A partir do momentoque a plataformaconseguedescobririnformaçõesrelativasaodispositivo e aoambiente de execução, o consumo dos recursoséotimizado, o queconsequentementeaumenta a probabilidade de sucesso.Além disso, o fato de sercentralizado entre osaplicativosfornecemaiorsegurança de quenenhumaplicativoiráinterferir no desempenho de outro com relação a essasverificações
  • O framework exige que cada SyncAdapter tenha um tipo de conta, que pode ser de terceiros como a própria conta do Google ou do próprio aplicativo. E após definir esse tipo, é preciso adicionar uma conta desse tipo através por exemplo do AccountManager.Essa conta pode ser usada durante a sincronização para realizar a autenticação no servidor antes de iniciar a transferência de dados.
  • Na implementação doSyncAdaptera lógica de transferência de dados é encapsulada em uma classe, que normalmente irá realizar operações como se conectar ao servidor, podendo fazer uso da conta para autenticação, obter ou enviar dados, resolver conflitos nos dados e fazer a limpeza de cache e outros arquivos temporários.Para que o framework consiga executar o código de sincronização de seu aplicativo é necessário criar um serviço, o qual será bindado e retornará uma instância singleton da classe encapsuladora.Durante a transferência de dados, muitas informações podem ser obtidas e usadas para construir uma resposta que será enviada ao framework, o qual usará para verificar o resultado final da sincronização e verificar se ela deve ser reagendada dependendo das falhas encontradas.Além da necessidade da criação de xmls com configurações e atualização do manifesto para que o SyncAdapter entenda através de quais componentes ele poderá se comunicar com seu aplicativo.
  • É comum que muitos aplicativos que gerem dados usem uma estrutura de armazenamento com o SQLite e a implementação de um ContentProvider para comunicação entre o aplicativo e o banco. Além disso a comunicação entre o SyncAdapter e o ContentProvider pode ser feita através de um Content Resolver, o qual é usado para definir alguns comportamentos de sincronização e também para notificar o SyncAdapter que dados locais foram alterados e precisam ser sincronizados.
  • Hásituacõesque o SyncAdapter dado umasituação dosrecursosiráreduzir as sincronizaçõesfeitas.No entanto, existemsituaçõesondeos dados sãomaisimportantesqueosrecusos do dispositivo, comoporexemploumaconsulta a dados da bolsa de valores.
  • É comum que muitos aplicativos que gerem dados usem uma estrutura de armazenamento com o SQLite e a implementação de um ContentProvider para comunicação entre o aplicativo e o banco. Além disso a comunicação entre o SyncAdapter e o ContentProvider pode ser feita através de um Content Resolver, o qual é usado para definir alguns comportamentos de sincronização e também para notificar o SyncAdapter que dados locais foram alterados e precisam ser sincronizados.
  • Éimportanteconsiderar o servidorpara a realização da sincronização. Porduasequipesdistintasquenão se conversamparadesenvolvimento da sincronização, mesmoutilizandotodososconceitosquevimospodecriarumasincronizaçãonãoefeciente de diversasformas.
  • Transcript

    • 1. Sincronização Como resolver? Renato Ferreira Soares Vinicius Pilot Moleta
    • 2. Por que sincronizar?
    • 3. Sincronização: Como resolver? Cenário Aplicativo Ambiente Dados
    • 4. Sincronização: Como resolver? Online Aplicativo Consulta online de dados Ambiente Dados
    • 5. Sincronização: Como resolver? Online • Dependência de conexão de dados • Demora na resposta • Cota 3G
    • 6. Sincronização: Como resolver? Replicação Aplicativo Ambiente Replicação Dados
    • 7. Sincronização: Como resolver? Replicação • Consistência • Eficiência do dispositivo • Manutenção
    • 8. Sincronização: Como resolver? Sincronização Aplicativo Ambiente Dados
    • 9. Sincronização: Como resolver? Cenário D3 A3 D2 A2 Ambiente Dados Centralizados A1 D1
    • 10. Parece importante, mas como eu faço?
    • 11. Sincronização: Como resolver? Polling Aplicativo Servidor
    • 12. Sincronização: Como resolver? Polling • Uso ineficiente dos recursos • Bateria • Internet • Sincronização perdidas
    • 13. Como considerar tudo isso?
    • 14. Sincronização: Como resolver? SyncAdapter • Framework Android • Coordena sincronizações • Uso eficiente de recursos • Centralizado para todos os aplicativos
    • 15. Sincronização: Como resolver? Conta • Necessidade de um tipo de conta • Terceiro • Própria • Adicionar uma conta desse tipo • Autenticação na sincronização • Configurações
    • 16. Sincronização: Como resolver? Sincronização • Lógica de transferência de dados • Serviço para framework executar seu código • Resultado para o framework • Configurações
    • 17. Sincronização: Como resolver? Dados • Content provider e base SQLite • Content resolver
    • 18. Sincronização: Como resolver? SyncAdapter Autenticação Conta Serviço de Sincronização Content Resolver SyncAdapter Implementação Servidor Content Provider SQLite
    • 19. Então sempre devo utilizar DEPENDE somente o SyncAdapter?
    • 20. Sincronização: Como resolver? Utilização SyncAdapter • Dados mais importantes que recursos • Online • Assíncrono
    • 21. E quando o SyncAdapter irá executar?
    • 22. Sincronização: Como resolver? Técnicas Geração de Dados Aplicativo Servidor • Requisições Periódicas • Requisição Forçada Dados Dados
    • 23. Mas e se eu quiser que o servidor informe quando um dado foi modificado?
    • 24. Sincronização: Como resolver? Google Cloud Messaging • Serviço mantido pelo Google • Grátis • Limite do tamanho da requisição A • Específico para notificações
    • 25. Sincronização: Como resolver? Google Cloud Messaging Registrar o Dispositivo / Aplicativo em um projeto específico. Aplicativo Google Cloud Messaging A Registro ID Registro ID Servidor
    • 26. Sincronização: Como resolver? Google Cloud Messaging Entrega da mensagem quando estiver disponível. Aplicativo Google Cloud Messaging Requisita que uma mensagem seja enviada. A Servidor
    • 27. Pode-se unir as técnicas?
    • 28. Sincronização: Como resolver? Google Cloud Messaging Geração de Dados Aplicativo Geração de Dados Servidor
    • 29. E o servidor?
    • 30. Sincronização: Como resolver? Servidor • Muitas notificações ao dispositivo • Grande volume de dados • Dados desnecessários