我正在使用 ormLite 在设备上存储数据。
我不明白为什么,但是当我存储大约 100 个对象时,其中一些对象存储时间太长,最多可达秒。
这是代码
来自数据库管理器:
public class DatabaseManager
public void addSomeObject(SomeObject object) {
try {
getHelper().getSomeObjectDao().create(object);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public class DatabaseHelper extends OrmLiteSqliteOpenHelper
public Dao<SomeObject, Integer> getSomeObjectDao() {
if (null == someObjectDao) {
try {
someObjectDao = getDao(SomeObject.class);
} catch (Exception e) {
e.printStackTrace();
}
}
return someObjectDao;
}
有什么想法可以避免这种情况吗?
感谢格雷!
正如 Gray 提到的,解决方案是使用 callBatchTasks 方法:
public void updateListOfObjects (final List <Object> list) {
try {
getHelper().getObjectDao().callBatchTasks(new Callable<Object> (){
@Override
public Object call() throws Exception {
for (Object obj : list){
getHelper().getObjectDao().createOrUpdate(obj);
}
return null;
}
});
} catch (Exception e) {
Log.d(TAG, "updateListOfObjects. Exception " + e.toString());
}
}
使用这种方式,我的对象(两种类型的对象,第一种类型 - 大约 100 个项目,第二种类型 - 大约 150 个项目)在 1.7 秒内存储。
See the ORMLite 文档.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)