4

ormLite を使用してデバイスにデータを保存しています。理由はわかりませんが、約 100 個のオブジェクトを保存すると、一部のオブジェクトは非常に長い時間 (最大で 1 秒) 保存されます。ここにコードがあります

データベースマネージャーから:

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;
    }

この状況を回避するためのアイデアはありますか?

4

1 に答える 1

11

グレイに感謝!解決策は、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());
}
}

この方法を使用すると、私のオブジェクト (2 種類のオブジェクト、1 番目のタイプ - 約 100 アイテム、2 番目のタイプ - 約 150 アイテム) が 1.7 秒で保存されます。

ORMLiteのドキュメントを参照してください。

于 2013-05-27T06:33:30.210 に答える