2017-02-18 5 views
1

При использовании автономной синхронизации с Azure Mobile Services Android SDK мне нужно вызвать MobileServiceSyncContext.initialize в каждом мероприятии, которое требует доступа к какой-либо таблице? Если да, то почему? Локальная база данных не должна инициализироваться только один раз? Я делаю все неправильно? Каждый раз, когда вызывается метод initialize, он пытается снова создать все таблицы, даже если они уже существуют, для меня это не так хорошо. Есть ли способ инициализировать syncContext только один раз или, по крайней мере, избегать рамки, использующей sql-скрипты, для создания таблиц каждый раз, когда инициализируется syncContext?Нужно ли мне вызвать MobileServiceSyncContext.initialize в каждом мероприятии?

Спасибо!

PS: Я новичок в разработке Android, так что приятно :)

ответ

0

По вашему описанию, основываясь на моем понимании, это, кажется, что вы есть следовать некоторые документы и образцы ниже, чтобы создать приложение, используя автономная функция синхронизации данных.

  1. Блог: Offline support in the Azure Mobile Services Android SDK
  2. Пример: https://github.com/Azure/mobile-services-samples/blob/master/TodoOffline/Android/blog20140807/app/src/main/java/com/example/blog20140807/ToDoActivity.java

За мой опыт & согласно javadocs Лазурного Mobile Apps SDK для Android, я думаю, вы можете попробовать добавить код, используя метод MobileServiceSyncContext.isInitalized ниже для проверки состояния инициализации MobileServiceSyncContext на основе sample code, как показано ниже, во избежание дублирования операции инициализации.

MobileServiceSyncContext syncContext = mClient.getSyncContext(); 

if(syncContext.isInitalized()) { 

    Map<String, ColumnDataType> tableDefinition = new HashMap<String, ColumnDataType>(); 
    tableDefinition.put("id", ColumnDataType.String); 
    tableDefinition.put("text", ColumnDataType.String); 
    tableDefinition.put("complete", ColumnDataType.Boolean); 
    tableDefinition.put("__version", ColumnDataType.String); 

    localStore.defineTable("ToDoItem", tableDefinition); 
    syncContext.initialize(localStore, handler).get(); 
} 
0

Возможно, следующая деталь может помочь в решении. Для MobileServiceClient вам нужен контекст приложения, а не контекст каждого действия. Таким образом, вам не нужно инициализировать syncContext для каждого действия. Возможно, вы можете сохранить его в SharedPreferences с помощью Gson().

MobileServiceClient mClient = new MobileServiceClient(
"<MobileAppUrl>",  // Replace with the Site URL 
this);     // Your application Context 

Источник: [1]: https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library

Смежные вопросы