Megosztás a következőn keresztül:


Offline szinkronizálás engedélyezése androidos mobilalkalmazáshoz

Áttekintés

Ez az oktatóanyag az Androidhoz készült Azure Mobile Apps offline szinkronizálási funkcióját tartalmazza. Az offline szinkronizálás lehetővé teszi a végfelhasználók számára, hogy akkor is kommunikálnak a mobilalkalmazásokkal ( adatok megtekintése, hozzáadása vagy módosítása) akkor is, ha nincs hálózati kapcsolat. A módosításokat a rendszer egy helyi adatbázisban tárolja. Miután az eszköz újra elérhető, a rendszer szinkronizálja ezeket a módosításokat a távoli háttéralkalmazással.

Ha most először használja az Azure Mobile Apps, először az Android-alkalmazás létrehozása oktatóanyagot kell végrehajtania. Ha nem használja a letöltött gyors indítási kiszolgálóprojektet, hozzá kell adni az adatelérési bővítménycsomagokat a projekthez. További információ a kiszolgálóbővítmény-csomagokról: Az Azure-hoz készült .NET háttérkiszolgálói SDK Mobile Apps.

Az offline szinkronizálási funkcióval kapcsolatos további információkért tekintse meg az Offline adatszinkronizálás az Azure Mobile Apps.

Az alkalmazás frissítése az offline szinkronizálás támogatásához

Az offline szinkronizálással (az IMobileServiceSyncTable felület használatával) egy szinkronizálási táblába olvashat és írhat, amely az eszközön található SQLite-adatbázis része.

Az eszköz és az Azure Mobile Services közötti módosítások leküldéséhez és leküldéséhez egy szinkronizálási környezetet (MobileServiceClient.SyncContext) kell használnia, amelyet a helyi adatbázissal inicializál az adatok helyi tárolására.

  1. A TodoActivity.javafájlban megjegyzésbe kell tenni a mToDoTable szinkronizálási tábla meglévő definícióját, és a szinkronizálási tábla verziójának megjegyzésként való megjegyzésként való be- és megjegyzésbe való be

     private MobileServiceSyncTable<ToDoItem> mToDoTable;
    
  2. A metódusban onCreate megjegyzésbe kell tenni a meglévő inicializálását mToDoTable , és a definíció megjegyzésként való felhagyása:

     mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
    
  3. Megjegyzésként refreshItemsFromTable a definíciója megjegyzésként, results és a definíció megjegyzésként való megjegyzésként való megjegyzésként való be- és megjegyzésként való megszűkülése:

     // Offline Sync
     final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
    
  4. Megjegyzésként a definíciója refreshItemsFromMobileServiceTable.

  5. A definíciójának visszaiktálásának a nincs megszabadítása 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. A definíciójának visszaiktálásának a nincs megszabadítása 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);
     }
    

Az alkalmazás tesztelése

Ebben a szakaszban a Wi-Fi bekapcsolt állapotban teszteli a viselkedést, majd kikapcsolja a Wi-Fi-t offline forgatókönyv létrehozásához.

Adatelemek hozzáadásakor a rendszer a helyi SQLite-tárolóban tárolja őket, de nem szinkronizálja őket a mobilszolgáltatással, amíg a Frissítés gombra nem kattint. Más alkalmazások esetében eltérő követelmények vonatkozhatnak arra vonatkozóan, hogy mikor kell szinkronizálni az adatokat, de bemutató célokból a felhasználó kifejezetten kéri azokat.

Amikor megnyomja ezt a gombot, elindul egy új háttérfeladat. Először lekultálja az összes módosítást a helyi tárolóba a szinkronizálási környezet használatával, majd lekért minden módosított adatot az Azure-ból a helyi táblába.

Offline tesztelés

  1. Helyezze az eszközt vagy szimulátort repülőgépes üzemmódba. Ez offline forgatókönyvet hoz létre.

  2. Adjon hozzá néhány ToDo elemet, vagy jelöln meg néhány elemet befejezettként. Zárja be az eszközt vagy a szimulátort (vagy zárja be az alkalmazást) és indítsa újra. Ellenőrizze, hogy a módosítások megőrzve vannak-e az eszközön, mert a helyi SQLite-tárolóban vannak tárolva.

  3. Tekintse meg az Azure TodoItem tábla tartalmát egy olyan SQL eszközzel, mint a SQL Server Management Studio, vagy egy REST-ügyfél, például a Fiddler vagy a Postman. Ellenőrizze, hogy az új elemek nem szinkronizálva vannak-e a kiszolgálóval

    + 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. Kapcsolja be a Wi-Fi-t az eszközön vagy a szimulátorban. Ezután kattintson a Frissítés gombra .

  5. Tekintse meg újra a TodoItem adatokat a Azure Portal. Meg kell jelenni az új és módosított TodoItems nak.

További források