2016-01-07 16 views
6

1. Moja aplikacja to co 2 minuty danych wstawia się do lokalnej bazy danych (przy użyciu synchronizacji offline Azure), a następnie co 5 minut dane są synchronizowane z bazą danych Azure za pomocą usługi w tle.Uzyskaj wynik z platformy Azure, a następnie wstaw wiersz i usuń dane wiersza z lokalnej bazy danych po wstawieniu do bazy danych Azure.

2. Każdy wiersz danych po wstawieniu w serwerze AZURE, chcę usunąć z lokalnej bazy danych.

Moje pytanie:

1.how może wiem, że mój każdy wiersz jest włożona lub nie w Server. Każda odpowiedź zostanie odesłana do klienta End from Server. Inne inne rozwiązanie? .

2. Usunąć wiersz wstawiony na serwerze Azure z lokalnego Sqlite (po uzyskaniu zgodności w postaci wstawionej z serwera Azure).

Również chcę odzyskać dane zapisane w lokalnej bazie danych przy użyciu metody Azure.

Używam Chmury Azure dla Koniec serwera.

Link I referred for Offline Azure Sync from Sqlite

Odpowiedz

4

za 1, można zaimplementować obsługi przechwycić odpowiedzi serwera przed podaniem tych danych z powrotem do klienta (patrz: https://github.com/Azure/azure-mobile-apps-android-client/blob/ef4759078cb031de9a5cbb05d07dc52322952ac1/sdk/src/sdk/src/main/java/com/microsoft/windowsazure/mobileservices/table/sync/synchandler/SimpleSyncHandler.java)

public class MySyncHandler implements MobileServiceSyncHandler { 

@Override 
public JsonObject executeTableOperation(RemoteTableOperationProcessor processor, TableOperation operation) throws MobileServiceSyncHandlerException { 
    try { 
     return operation.accept(processor); 
    } catch (Throwable e) { 
     throw new MobileServiceSyncHandlerException(e); 
    } 
} 

Jeśli operacja nie rzucać, oznacza to, że żądanie HTTP zakończyło się powodzeniem, więc możesz przejść do usuwania elementu.

Aby usunąć wiersz, nie należy używać tabeli synchronizacji, ponieważ śledziłoby to operację. Możesz użyć bezpośredniego połączenia SQL, aby to zrobić. Inną opcją byłoby zaktualizowanie powyższej funkcji w celu wygenerowania niestandardowego błędu zamiast zwracania. Umożliwiłoby to pojawienie się błędu w następnej metodzie w procedurze obsługi (onPushComplete).

Za pomocą klasy TableOperationError można łatwo anulować operację i odrzucić lokalny element za pomocą wbudowanej metody w kontekście synchronizacji.

więc pętla przez getOperationErrors() metoda i dla każdego z nich, który jest twój błąd zwyczaj po prostu wywołać metodę cancelAndDiscardItem (https://github.com/Azure/azure-mobile-apps-android-client/blob/ef4759078cb031de9a5cbb05d07dc52322952ac1/sdk/src/sdk/src/main/java/com/microsoft/windowsazure/mobileservices/table/sync/MobileServiceSyncContext.java#L283)

Wreszcie, odzyskiwanie danych z lokalnego sklepu odbywa się poprzez SyncTable klasie. Metody odczytu i zapytania są w większości zgodne z wersjami online. Oto przykład podnoszone z Androidem QS:

Query query = QueryOperations.field("complete").eq(val(false)); 
    return mToDoTable.read(query).get(); 
1

Microsoft dostarczył incremental sync w iOS za pomocą identyfikatora zapytania, które pobiera tylko te rekordy zmodyfikowane od czasu ostatniej synchronizacji wykorzystaniem rekord za UpdatedAt znacznik czasu. Może mógłbyś wyszukać, gdyby Microsoft dostarczył te same funkcje w systemie Android?

Powiązane problemy