Ativar sincronização offline para a sua aplicação móvel Android
Descrição Geral
Este tutorial cobre a funcionalidade de sincronização offline de Aplicações Azure Mobile para Android. A sincronização offline permite que os utilizadores finais interajam com uma aplicação móvel — visualização, adição ou modificação de dados — mesmo quando não há ligação à rede. As alterações são armazenadas numa base de dados local. Uma vez que o dispositivo está novamente on-line, estas alterações são sincronizadas com o backend remoto.
Se esta é a sua primeira experiência com aplicações móveis Azure, deve primeiro completar o tutorial Criar uma Aplicação Android. Se não utilizar o projeto de servidor de arranque rápido descarregado, tem de adicionar os pacotes de extensão de acesso a dados ao seu projeto. Para obter mais informações sobre pacotes de extensão do servidor, consulte Work with the .NET backend server SDK for Azure Mobile Apps.
Para saber mais sobre a funcionalidade de sincronização offline, consulte o tópico Offline Sincronização de Dados em Azure Mobile Apps.
Atualize a app para suportar sincronização offline
Com sincronização offline, lê-se e escreve a partir de uma tabela de sincronização (utilizando a interface IMobileServiceSyncTable ), que faz parte de uma base de dados SQLite no seu dispositivo.
Para empurrar e puxar as alterações entre o dispositivo e o Azure Serviços Móveis, utiliza um contexto de sincronização (MobileServiceClient.SyncContext), que inicializa com a base de dados local para armazenar dados localmente.
Em
TodoActivity.java
, comentar a definição existente emToDoTable
descomprimir a versão do quadro de sincronização:private MobileServiceSyncTable<ToDoItem> mToDoTable;
onCreate
No método, comentumente a inicializaçãomToDoTable
e descodão existentes desta definição:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
Em
refreshItemsFromTable
comentários a definição eresults
descompromisso desta definição:// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
Comente a definição de
refreshItemsFromMobileServiceTable
.Descomprimimento 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(); }
Descomprimimento 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 a aplicação
Nesta secção, você testa o comportamento com Wi-Fi ligado e, em seguida, desligue o Wi-Fi para criar um cenário offline.
Quando adiciona itens de dados, eles são mantidos na loja LOCAL SQLite, mas não sincronizados com o serviço móvel até que você prima o botão Refresh . Outras aplicações podem ter requisitos diferentes em relação à data em que os dados precisam de ser sincronizados, mas para efeitos de demonstração este tutorial tem o utilizador explicitamente a solicitar.
Quando carregas nesse botão, inicia-se uma nova tarefa de fundo. Primeiro empurra todas as alterações feitas para a loja local usando o contexto de sincronização, em seguida, puxa todos os dados alterados de Azure para a mesa local.
Teste offline
Coloque o dispositivo ou simulador no Modo Avião. Isto cria um cenário offline.
Adicione alguns itens ToDo ou marque alguns itens como completos. Deixe o dispositivo ou simulador (ou feche à força a aplicação) e reinicie. Verifique se as suas alterações foram persistiu no dispositivo porque estão na loja LOCAL SQLite.
Veja o conteúdo da tabela Azure TodoItem com uma ferramenta SQL, como SQL Server Management Studio, ou com um cliente REST, como o Fiddler ou o Carteiro. Verifique se os novos itens não foram sincronizados no 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*.
Ligue o Wi-Fi no dispositivo ou simulador. Em seguida, prima o botão Refresh .
Consulte novamente os dados do TodoItem no portal do Azure. O novo e alterado TodoItems deve agora aparecer.
Recursos Adicionais
- Sincronização de Dados Offline nas Aplicações Móveis do Azure
- Cloud Cover: Offline Sync in Azure Serviços Móveis (nota: o vídeo está em Serviços Móveis, mas a sincronização offline funciona de forma semelhante em Azure Mobile Apps)