Habilitar sincronização offline para seu aplicativo móvel Android
Visão geral
Este tutorial aborda o recurso de sincronização offline de Aplicativos móveis do Azure para Android. A sincronização offline permite que os usuários finais interajam com um aplicativo móvel – exibindo, adicionando ou modificando dados — mesmo quando não há conexão de rede. As alterações são armazenadas em um banco de dados local. Quando o dispositivo estiver online novamente, essas alterações serão sincronizadas com o back-end remoto.
Se essa for sua primeira experiência com os Aplicativos Móveis do Azure, você deve primeiro concluir o tutorial Criar um aplicativo do iOS. Se você não usar o projeto baixado do início rápido do servidor, deve adicionar os pacotes de extensão de acesso de dados autenticação ao seu projeto. Para obter mais informações sobre pacotes de extensão do servidor, confira Trabalhar com o servidor .NET back-end do SDK para Aplicativos Móveis do Azure.
Para saber mais sobre o recurso de sincronização offline, confira o tópico Sincronização de dados offline nos Aplicativos Móveis do Azure.
Atualizar o aplicativo para dar suporte à sincronização offline
Com sincronização offline você lê e grava de uma tabela de sincronização (usando a interface IMobileServiceSyncTable), que é parte de um banco de dados SQLite no dispositivo.
Para enviar e receber alterações entre o dispositivo e os serviços móveis do Azure, você deve usar um o contexto de sincronização (MobileServiceClient.SyncContext), que você inicializar com o banco de dados local para armazenar dados localmente.
Em
TodoActivity.java
, comente a definição existente demToDoTable
e remova a versão da tabela de sincronização:private MobileServiceSyncTable<ToDoItem> mToDoTable;
No método
onCreate
, comente a inicialização existente demToDoTable
e remova essa definição:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
Em
refreshItemsFromTable
, comente a definição deresults
e remova essa definição:// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
Comente a definição de
refreshItemsFromMobileServiceTable
:Remova a definição de
refreshItemsFromMobileServiceTableSyncTable
:private List<ToDoItem> refreshItemsFromMobileServiceTableSyncTable() throws ExecutionException, InterruptedException { //sync the data sync().get(); Query query = QueryOperations.field("complete"). eq(val(false)); return mToDoTable.read(query).get(); }
Remova a definição de
sync
:private AsyncTask<Void, Void, Void> sync() { AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){ @Override protected Void doInBackground(Void... params) { try { MobileServiceSyncContext syncContext = mClient.getSyncContext(); syncContext.push().get(); mToDoTable.pull(null).get(); } catch (final Exception e) { createAndShowDialogFromTask(e, "Error"); } return null; } }; return runAsyncTask(task); }
Testar o aplicativo
Nesta seção, você testará o comportamento com o WiFi ativado e depois o desativará para criar um cenário offline.
Quando você adiciona itens de dados, eles são mantidos no armazenamento local do SQL Lite , mas não sincronizados para o serviço móvel, até que você pressione o botão Atualizar . Outros aplicativos podem ter necessidades diferentes em relação a quando os dados precisam ser sincronizados, mas para fins de demonstração neste tutorial o usuário tem que solicitá-lo explicitamente.
Quando você pressiona o botão, inicia uma nova tarefa em segundo plano. Primeiro, ela envia por push todas as alterações feitas no repositório local usando o contexto de sincronização, e depois recebe todos os dados alterados do Azure para a tabela local.
Teste offline
Coloque o dispositivo ou o simulador em Modo de Avião. Isso cria um cenário offline.
Adicione alguns itens de tarefas pendentes ou marque alguns itens como concluídos. Feche o dispositivo ou simulador (ou feche forçadamente o aplicativo) e reinicie. Por ainda estarem vigentes no armazenamento do SQL Lite local, as alterações ficam mantidas no dispositivo.
Exiba os conteúdos da tabela TodoItem do Azure com uma ferramenta SQL, como o SQL Server Management Studio, ou então com um cliente REST, como o Fiddler ou o Postman. Confirme que os novos itens não foram sincronizados com o servidor
+ For a Node.js backend, go to the [Azure portal](https://portal.azure.com/), and in your Mobile App backend click **Easy Tables** > **TodoItem** to view the contents of the `TodoItem` table. + For a .NET backend, view the table contents either with a SQL tool such as *SQL Server Management Studio*, or a REST client such as *Fiddler* or *Postman*.
Ative o WiFi no simulador ou dispositivo. Em seguida, pressione o botão Atualizar .
Exiba os dados de TodoItem novamente no portal do Azure. Os TodoItems novos e modificados agora devem aparecer.
Recursos adicionais
- Sincronização de dados offline em Aplicativos Móveis do Azure
- Cobertura em nuvem: sincronização Offline nos serviços móveis do Azure (Observação: o vídeo está nos Serviços Móveis, mas a sincronização offline funciona de maneira semelhante nos Aplicativos Móveis do Azure)