我有一个看起来像这样的方法
public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
return BaseDaoImpl.createDao(getConnectionSource(), ModelStore.class);
}
当我致电getDaoStore
时,这是一个漫长的过程。在我的日志中,我可以看到GC在每次调用之后运行,所以我猜这次调用会有很多事情发生。
有没有办法加快速度?
答案 0 :(得分:8)
对Android-land的深入研究表明,由于采用了粗略的Method.equals()
方法,Android下的注释非常缓慢且非常 GC密集型。我们在版本4.26中添加了表配置文件,绕过了这个并使ORMLite启动得更快,更快。请参阅邮件列表中的this question和this thread。
我们继续提高注释速度。另见:ORMLite poor performance on Android?
DAO创建是一个相对昂贵的过程。 ORMLite创建类中的类和字段的数据表示,并构建许多其他实用程序类,以帮助实现各种DAO功能。您应确保每次调用时调用createDao
方法一次。我认为这是在Android @Pzanno?
在4.16中,我们添加了一个DaoManager
,它的作用是缓存Dao类,这在版本4.20中得到了改进。然后,您应该始终使用它来创建您的Daos。建议使用以下代码:
private Dao<ModelStore, Integer> modelStoreDao = null;
...
public Dao<ModelStore, Integer> getDaoStore() throws SQLException {
if (modelStoreDao == null) {
modelStoreDao = DaoManager.createDao(getConnectionSource(),
ModelStore.class);
}
return modelStoreDao;
}
希望这会有所帮助。 ORMLite的内存审计也可能是有序的。我看了它的消费已经有一段时间了。