我的Android应用从Parse服务器读取数据。所有类都有一个“isDeleted”布尔列,用于确定对象是否被视为“实时”,并应显示在客户端设备上。
不幸的是,一位同事被要求删除一个类的两个对象,他不知道将对象标记为已删除的正确方法。相反,他对服务器上的两个对象进行了硬删除。现在这两个“僵尸”对象不会从本地安装中消失。
我认为我可以通过从设备中删除所有本地数据并从服务器执行完整数据刷新来解决此问题。我编写了一个应用程序更新,在检测到新的版本号时,从本地Parse数据存储区取消所有对象,并从服务器重新下载所有数据。
ParseObject.unpinAll(MyClass.CLASS_NAME);
但是这行代码并没有达到我的预期。从服务器删除的两个对象不会从客户端设备中删除!
如何从本地Parse数据存储中彻底彻底删除所有固定对象并使这两个“僵尸”对象消失?
该应用正在使用最新版本的Parse:
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 :(得分:1)
我找到了解决自己问题的方法。要删除本地商店中的所有对象,我将ParseObject.unpinAll()
的调用替换为ParseObject.unpinAllInBackground()
。
所以而不是
ParseObject.unpinAll(MyClass.CLASS_NAME)
我有
ParseObject.unpinAllInBackground(new DeleteCallback() {
@Override
public void done(ParseException e) {
// ...
}
});
现在所有以前保存的对象都已从本地存储中消失。