在开发 Android 应用程序时,我遇到了一个非常相关的问题(至少我认为是)。
例子
我们在数据库上插入 10000 行(一次)。
db.beginTransaction();
try{
for(Object toInsert: listOfObjects) {
ContentValues values = new ContentValues();
//put the values on the object
values.put(key, toInsert.getValue());
db.insert(columnName, null, values);
}
db.setTransactionSuccessful();
} catch(Exception e) {
//handle exception
} finally {
db.endTransaction();
}
我们在循环中创建了 10000 个新的 ContentValue 对象。并且对象创建对 VM 来说非常昂贵。如果我们稍微修改一下呢?
不同的方法
ContentValues values, hack = new ContentValues();
db.beginTransaction();
try{
for(Object toInsert: listOfObjects) {
values = hack;
//put the values on the object
values.put(key, toInsert.getValue());
db.insert(columnName, null, values);
}
db.setTransactionSuccessful();
} catch(Exception e) {
//handle exception
} finally {
db.endTransaction();
}
在第二个示例中,我们正在对值对象进行“重置”,因为它将在每一行中使用。
所以,我的问题是:我这样做对吗?使用第二种方法,我正在优化流程而不会留下很大的内存占用?如果不是,为什么?您对此有什么建议/想法吗?