Sincronização
Como resolver?

Renato Ferreira Soares
Vinicius Pilot Moleta
Por que sincronizar?
Sincronização: Como resolver?

Cenário

Aplicativo

Ambiente

Dados
Sincronização: Como resolver?

Online

Aplicativo

Consulta online de dados

Ambiente

Dados
Sincronização: Como resolver?

Online
• Dependência de conexão de dados
• Demora na resposta
• Cota 3G
Sincronização: Como resolver?

Replicação

Aplicativo

Ambiente

Replicação

Dados
Sincronização: Como resolver?

Replicação
• Consistência
• Eficiência do dispositivo
• Manutenção
Sincronização: Como resolver?

Sincronização

Aplicativo

Ambiente

Dados
Sincronização: Como resolver?

Cenário
D3

A3

D2

A2

Ambiente

Dados
Centralizados

A1

D1
Parece importante,
mas como eu faço?
Sincronização: Como resolver?

Polling
Aplicativo

Servidor
Sincronização: Como resolver?

Polling
• Uso ineficiente dos recursos
• Bateria
• Internet
• Sincronização perdidas
Como considerar tudo isso?
Sincronização: Como resolver?

SyncAdapter
• Framework Android
• Coordena sincronizações
• Uso eficiente de recursos
• Cen...
Sincronização: Como resolver?

Conta
• Necessidade de um tipo de conta
• Terceiro
• Própria
• Adicionar uma conta desse ti...
Sincronização: Como resolver?

Sincronização
• Lógica de transferência de dados
• Serviço para framework executar seu códi...
Sincronização: Como resolver?

Dados
• Content provider e base SQLite
• Content resolver
Sincronização: Como resolver?

SyncAdapter
Autenticação

Conta

Serviço de
Sincronização

Content Resolver

SyncAdapter
Im...
Então sempre devo utilizar
DEPENDE
somente o SyncAdapter?
Sincronização: Como resolver?

Utilização SyncAdapter
• Dados mais importantes que recursos
• Online
• Assíncrono
E quando o SyncAdapter irá
executar?
Sincronização: Como resolver?

Técnicas
Geração de Dados

Aplicativo

Servidor
• Requisições Periódicas
• Requisição Força...
Mas e se eu quiser que o
servidor informe quando
um dado foi modificado?
Sincronização: Como resolver?

Google Cloud Messaging
• Serviço mantido pelo Google
• Grátis
• Limite do tamanho da requis...
Sincronização: Como resolver?

Google Cloud Messaging
Registrar o Dispositivo / Aplicativo
em um projeto específico.

Apli...
Sincronização: Como resolver?

Google Cloud Messaging
Entrega da mensagem
quando estiver
disponível.

Aplicativo

Google C...
Pode-se unir as técnicas?
Sincronização: Como resolver?

Google Cloud
Messaging

Geração de Dados

Aplicativo

Geração de Dados

Servidor
E o servidor?
Sincronização: Como resolver?

Servidor
• Muitas notificações ao dispositivo
• Grande volume de dados
• Dados desnecessári...
Sinconização: como resolver?
Sinconização: como resolver?
Próximos SlideShares
Carregando em…5
×

Sinconização: como resolver?

663 visualizações

Publicada em

Palestra apresentada no AndroiDay 2013.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
663
No SlideShare
0
A partir de incorporações
0
Número de incorporações
82
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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.
  • Sinconização: como resolver?

    1. 1. Sincronização Como resolver? Renato Ferreira Soares Vinicius Pilot Moleta
    2. 2. Por que sincronizar?
    3. 3. Sincronização: Como resolver? Cenário Aplicativo Ambiente Dados
    4. 4. Sincronização: Como resolver? Online Aplicativo Consulta online de dados Ambiente Dados
    5. 5. Sincronização: Como resolver? Online • Dependência de conexão de dados • Demora na resposta • Cota 3G
    6. 6. Sincronização: Como resolver? Replicação Aplicativo Ambiente Replicação Dados
    7. 7. Sincronização: Como resolver? Replicação • Consistência • Eficiência do dispositivo • Manutenção
    8. 8. Sincronização: Como resolver? Sincronização Aplicativo Ambiente Dados
    9. 9. Sincronização: Como resolver? Cenário D3 A3 D2 A2 Ambiente Dados Centralizados A1 D1
    10. 10. Parece importante, mas como eu faço?
    11. 11. Sincronização: Como resolver? Polling Aplicativo Servidor
    12. 12. Sincronização: Como resolver? Polling • Uso ineficiente dos recursos • Bateria • Internet • Sincronização perdidas
    13. 13. Como considerar tudo isso?
    14. 14. Sincronização: Como resolver? SyncAdapter • Framework Android • Coordena sincronizações • Uso eficiente de recursos • Centralizado para todos os aplicativos
    15. 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. 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. 17. Sincronização: Como resolver? Dados • Content provider e base SQLite • Content resolver
    18. 18. Sincronização: Como resolver? SyncAdapter Autenticação Conta Serviço de Sincronização Content Resolver SyncAdapter Implementação Servidor Content Provider SQLite
    19. 19. Então sempre devo utilizar DEPENDE somente o SyncAdapter?
    20. 20. Sincronização: Como resolver? Utilização SyncAdapter • Dados mais importantes que recursos • Online • Assíncrono
    21. 21. E quando o SyncAdapter irá executar?
    22. 22. Sincronização: Como resolver? Técnicas Geração de Dados Aplicativo Servidor • Requisições Periódicas • Requisição Forçada Dados Dados
    23. 23. Mas e se eu quiser que o servidor informe quando um dado foi modificado?
    24. 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. 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. 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. 27. Pode-se unir as técnicas?
    28. 28. Sincronização: Como resolver? Google Cloud Messaging Geração de Dados Aplicativo Geração de Dados Servidor
    29. 29. E o servidor?
    30. 30. Sincronização: Como resolver? Servidor • Muitas notificações ao dispositivo • Grande volume de dados • Dados desnecessários

    ×