2017-01-03 2 views
0

Приложение для Android считывает данные с сервера анализа. Все классы имеют булевский столбец «isDeleted», который определяет, считается ли объект «живым» или должен отображаться на клиентских устройствах.Удалить все объекты в Android Parse local datastore

К сожалению, коллеге было предложено удалить два объекта класса, и он не знал, как правильно пометить объекты как удаленные. Вместо этого он сделал жесткое удаление двух объектов на сервере. Теперь эти два объекта «зомби» не исчезнут из локальных установок.

Я думал, что смогу исправить проблему, удалив все локальные данные с устройств и сделав полное обновление данных с сервера. Я написал обновление приложения, которое при обнаружении нового номера версии отключает все объекты из локального хранилища данных Parse и повторно загружает все данные с сервера.

ParseObject.unpinAll(MyClass.CLASS_NAME); 

Но эта строка кода не делает то, что я ожидал от нее. Два объекта, которые были удалены с сервера, не удаляются с клиентских устройств!

Как я могу полностью удалить все закрепленные объекты из локального хранилища данных анализа и убрать эти два объекта «зомби»?

Приложение использует последнюю версию разбора:

compile 'com.parse.bolts:bolts-tasks:1.3.0' 
compile 'com.parse:parse-android:1.13.0' 
compile 'com.parse:parseui-login-android:0.0.1' 
compile 'com.parse:parseui-widget-android:0.0.1' 
compile 'com.parse:parseinterceptors:0.0.2' 

ответ

0

Я нашел решение на мой собственный вопрос. Чтобы удалить все объекты из локального хранилища, я заменил вызов на ParseObject.unpinAll() на ParseObject.unpinAllInBackground().

Таким образом, вместо

ParseObject.unpinAll(MyClass.CLASS_NAME) 

У меня есть

ParseObject.unpinAllInBackground(new DeleteCallback() { 
     @Override 
     public void done(ParseException e) { 
      // ... 
     } 
    }); 

Теперь все ранее сохраненные объекты исчезли из местного магазина.

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