我正在开发Android应用程序,并且有一个用户可以更新其“选择”的类。这是来自用户安装应用程序时出现的对话框,但他也可以稍后通过溢出访问它。在启动时,根据用户的选择,我在Parse.com上传了一个类NCUP.class。但是当用户点击溢出图标来更改首选项时,我想通过删除所有以前的记录并添加新记录来“刷新”该表。我之前使用的是SQLite数据库而我刚刚使用
database.delete(MySQLiteHelper.TABLE_NCUP, null, null);
现在,我可以想到三种方式:
(目前正在进行)用户在选择pref后单击“完成”时,我会通过下面的代码删除表中的所有对象,但对于包含13个条目的类,这需要5秒钟。 :
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String current = dateFormat.format(date);
ParseQuery<NCUP> query = ParseQuery.getQuery(NCUP.class);
query.equals("objectId");
// query.whereLessThan("createdAt", date);
query.findInBackground(new FindCallback<NCUP>() {
@Override
public void done(List<NCUP> ncupList, ParseException e) {
if (e == null) {
Log.d("QUERY", "Retrieved " + ncupList.size() + " data");
Log.d("QUERY", ncupList.get(1).getCreatedAt().toString());
for (NCUP ncup : ncupList) {
try {
ncup.delete();
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
} else {
Log.d("QUERY", "Error: " + e.getMessage());
}
}
});
使用我上面评论过的行来获取查询,即使用当前日期并添加到查询whereLessThan来获取和删除旧项目。但是这不起作用,将ncupList.size()返回为0.尝试了不同的格式但没有帮助。
删除整个NCUP类并创建一个新类。我尝试搜索这种方法,因为它似乎对我来说最快,但我认为我不能以编程方式进行。
有什么建议吗?
答案 0 :(得分:1)
问题可能是您正在使用ncup.delete()
,它正在主线程上执行http请求。
替换为ncup.deleteInBackground()
,您的用户界面不会阻止。
同时查看ParseObject.deleteAllInBackground(List<ParseObject> objects, DeleteCallback callback)
,它似乎可以满足您的需求(删除ParseObjects列表)