Como lidar com a atualização RESTful do servidor remoto com o SyncAdapter

Eu assisti o REST de E / S do Google falar e ler os slides:http: //www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.htm

Ainda estou um pouco incerto sobre como lidar com, digamos, um erro de atualização gerado pelo servidor remoto. Eu implementei meu próprio ContentProvider e SyncAdapter. Considere este cenário:

Atualize os detalhes de contato de um usuário via chamada REST:

Solicite uma atualização usando um ContentResolveMy ContentProviderimediatament atualiza o banco de dados Sqlite local do aplicativo e solicita uma sincronização (conforme recomendações na palestra Google I / OMy SyncAdapter.onPerformSync () é chamado e faz uma chamada REST para atualizar os dados remoto O servidor remoto responde com "ERRO: Número de telefone inválido" (por exemplo

Minha pergunta é: qual é a melhor maneira de o SyncAdapter sinalizar para o meu ContentProvider que essa alteração precisa ser restaurada do banco de dados local do aplicativo e também sinalizar para a minha atividade que a solicitação de atualização falhou (e passar as mensagens de erro retornado do servidor)?

Minha atividade precisa exibir um controle giratório de progresso enquanto aguarda o resultado e saber se a solicitação foi bem-sucedida ou falho

Para atualizar o banco de dados do aplicativo local com o conteúdo do servidor, o padrão SyncAdapter faz todo o sentido para mim, e eu estou funcionando bem. Mas para atualizaçõesa partir d a aplicaçãopar no servidor, não consigo encontrar uma boa maneira de lidar com o cenário acim

E outra coisa... ;

Digo que eu chamo ContentResolver.notifyChange (uri, null, true); de dentro do método update () do meu ContentProvider.true junto comandroid:supportsUploading="true" fará com que o onPerformSync () do meu SyncAdapter seja chamado. Ótimo, mas dentro do onPerformSync (), como posso saber qual URI devo sincronizar? Não quero simplesmente atualizar meu banco de dados inteiro toda vez que receber uma solicitação de sincronização. Mas você não pode nem passar um Bundle para o notifyChangeCall () a ser passado para onPerformSync ().

Todos os exemplos que vi de onPerformSync () foram tão simples, e não usando um ContentProvider personalizado, existem exemplos do mundo real por aí? E os documentos são um pouco do ninho de um pássaro. Virgil Dobjanschi, senhor, você me deixou no riacho sem rem

questionAnswers(2)

yourAnswerToTheQuestion