我尝试做简单的测试。我有来自REST API的json响应,有~250个对象商店和文件中的相同响应,但第一个商店有不同的名称。第一步是加载大约250个商店的JSON文件,并使用ORMLite保存在本地数据库中。下一步是与API连接并获得相同的响应。新的json响应是解析,UPDATE存在于数据库中的元素。结果是什么?
现在我使用ListView转到简单的Activity并调用getShopsAll()
。此方法在更新之前返回旧数据。为什么?
这是在数据库中保存商店的方法:
public void createShop(final ArrayList<ModelSklep> list) throws Exception {
getDaoShop().callBatchTasks(new Callable<Void>() {
@Override
public Void call() {
for(ModelSklep item : list) {
createShop(item);
if(item.getHoursList().size() > 0) {
createHours(item.getHoursList());
}
}
return null;
}
});
}
Method createshop:
public boolean createShop(ModelSklep item) {
try {
getDaoShop().createOrUpdate(item);
return true;
} catch (SQLException e) {
return false;
}
}
方法getShopAll:
public ArrayList<ModelSklep> getShopAll() {
try {
return (ArrayList<ModelSklep>) getDaoShop().queryBuilder().orderByRaw(
"nazwaPelna COLLATE LOCALIZED ASC").query();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
对象正在更新。但是getShopAll()返回旧的数据对象。 更新后清除缓存不起作用。
帮助。我不知道如何解决这个问题。
[编辑]
public Dao<ModelSklep, Integer> getDaoShop() {
if(modelShopDao == null) {
try {
modelShopDao = getDao(ModelSklep.class);
modelShopDao.setObjectCache(true);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
return modelShopDao;
}