Android mobil uygulamanız için çevrimdışı eşitlemeyi etkinleştirme

Genel Bakış

Bu öğretici, Android için Azure Mobile Apps özelliğini kapsar. Çevrimdışı eşitleme, ağ bağlantısı yoksa bile son kullanıcıların bir mobil uygulamayla (verileri görüntüleme, ekleme veya değiştirme) etkileşim kurmasını sağlar. Değişiklikler yerel bir veritabanında depolanır. Cihaz yeniden çevrimiçi olduktan sonra, bu değişiklikler uzak arka uç ile eşitlenen.

Azure Mobile Apps ile ilgili ilk deneyiminiz bu ise, önce Android Uygulaması oluşturma öğreticisini tamamlamanız gerekir. İndirilen hızlı başlangıç sunucusu projesini kullanasanız, projenize veri erişimi uzantısı paketlerini eklemeniz gerekir. Sunucu uzantısı paketleri hakkında daha fazla bilgi için bkz . Azure hizmetleri için .NET arka uç sunucu SDK'sı ile Mobile Apps.

Çevrimdışı eşitleme özelliği hakkında daha fazla bilgi edinmek için Azure Data Sync çevrimdışı Mobile Apps.

Uygulamayı çevrimdışı eşitlemeyi destekleyecek şekilde güncelleştirme

Çevrimdışı eşitleme ile, cihazdaki bir SQLite veritabanının parçası olan bir eşitleme tablosundan (IMobileServiceSyncTable arabirimini kullanarak) okur ve yazarsınız.

Cihazla Azure Mobile Services arasında değişiklikleri itip çekmek için, yerel veritabanıyla başlatarak verileri yerel olarak depolamak üzere bir eşitleme bağlamı (MobileServiceClient.SyncContext) kullanırsınız.

  1. içinde TodoActivity.java, mevcut tanımını açıklama olarak alın mToDoTable ve eşitleme tablosu sürümünün açıklamalarını alın:

     private MobileServiceSyncTable<ToDoItem> mToDoTable;
    
  2. yönteminde onCreate , mevcut başlatmayı açıklama olarak alın mToDoTable ve bu tanımın açıklamalarını alın:

     mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
    
  3. tanımına refreshItemsFromTable açıklama olarak yer ve results bu tanımın açıklamalarını silin:

     // Offline Sync
     final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
    
  4. tanımını açıklama olarak alma refreshItemsFromMobileServiceTable.

  5. tanımını açıklamadan sildi: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();
     }
    
  6. tanımını açıklamadan sildi: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);
     }
    

Uygulamayı test etme

Bu bölümde, WiFi açık davranışını test ediyor ve ardından çevrimdışı bir senaryo oluşturmak için WiFi'yi kapatıyorsanız.

Veri öğeleri eklerken bunlar yerel SQLite mağazasında tutulacak ancak Yenile düğmesine basana kadar mobil hizmetle eşitlenmez . Diğer uygulamalar, verilerin eşitlenmesi gereken zamanlarla ilgili olarak farklı gereksinimlere sahip olabilir, ancak tanıtım amacıyla bu öğreticide kullanıcı bunu açıkça talep ediyor olabilir.

Bu düğmeye bastığınızda yeni bir arka plan görevi başlar. İlk olarak eşitleme bağlamını kullanarak yerel depoya yapılan tüm değişiklikleri iletir ve ardından değiştirilen tüm verileri Azure'dan yerel tabloya çeker.

Çevrimdışı test

  1. Cihazı veya simülatörü Uçak Modu'ne yer. Bu, çevrimdışı bir senaryo oluşturur.

  2. Bazı ToDo öğeleri ekleyin veya bazı öğeleri tamamlandı olarak işaretle. Cihazdan veya simülatörden çıkın (veya uygulamayı bir kez daha kapatın) ve yeniden başlatın. Değişikliklerinizin yerel SQLite mağazasında tutularak cihazda kalıcı olduğunu doğrulayın.

  3. Azure TodoItem tablosu içeriğini SQL gibi bir SQL Server Management Studio aracıyla veya Fiddler ya da Postman gibi bir REST istemcisiyle görüntüleniyor. Yeni öğelerin sunucuyla eşit olmadığını doğrulayın

    + 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*.
    
  4. Cihazda veya simülatörde WiFi'yi açın. Ardından Yenile düğmesine basın.

  5. TodoItem verilerini veri kaynağında yeniden Azure portal. Yeni ve değiştirilen TodoItems şimdi görüntü gerekir.

Ek Kaynaklar