Android ORMLite 缓慢创建对象

标签 android ormlite performance

我正在使用 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 秒内存储。

参见 ORMLite documentation .

关于Android ORMLite 缓慢创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16749209/

相关文章:

android - 在 fragment 中调用 getSystemServices 时未定义?

iphone - 在 UIScrollView 中按需加载 UITableView 中的单元格

c# - 仅当记录不存在时才通过存储过程从 TVP 列表中插入项目 - 性能低下

performance - 是什么导致了这个微不足道的 Fortran 代码的运行时差异?

java - 在 Derby 和 Hsqldb 中转义表名和字段名的问题

带有 PC 作为 USB 主机的 Android ADK,带有 libusb,批量传输错误

android - 使用 Gradle 构建会抛出 MalformedJsonException

android - GoogleAnalyticsTracker 无法解析为 android 中的类型

android - 使用 OrmLite 在 Sqlite 中组合删除语句的帮助不大

android - 如何在 Ormlite 中将 ForeignCollection 字段放入游标