我在一个Android项目中使用ORMLite,并且我不想使用扩展活动,因为我是在AsyncTask上将值插入数据库中。
您的路线正确,但@Matt有点偏离。坦白说,如果没有扩展我们的基类,我从来没有做过一个项目。但这是一个很好的练习,因此我创建了这个ORMLite示例项目,该项目使用an
Activity并管理自己的帮助程序。
您的
DBHelper课程很好,但实际上您不需要
DataAccess课程。在您的每项活动(或服务…)中,您都需要具有以下内容:
private DBHelper dbHelper = null;@Overrideprotected void onDestroy() { super.onDestroy(); if (dbHelper != null) { OpenHelperManager.releaseHelper(); dbHelper = null; }}private DBHelper getHelper() { if (dbHelper == null) { dbHelper = (DBHelper)OpenHelperManager.getHelper(this, DBHelper.class); } return dbHelper;}您[很明显],然后通过类似以下操作在代码中使用它:
Dao<SomeObject, Integer> someObjectDao = getHelper().getSomeObjectDao();
因此,每当您
getHelper()第一次打电话时,它将通过管理器获取帮助者,从而建立与数据库的连接。每当您的应用程序被操作系统销毁时,它都会释放帮助程序-
如果是最新版本,则可能会关闭基础数据库连接。
请注意,如果您甚至没有基类就这样做,则将第一个
OpenHelperManager.getHelper()需要使用。
Context``Activity
编辑:
如果您确实想创建一个
DataAccess类型类来集中处理helper类,那么您将需要使这些方法静态化并做自己的使用计数器。如果有多个活动和后台任务在呼叫,
getHelper()那么问题是您何时呼叫
releaseHelper()?您必须为每个get计数增加一个计数,并且只有在计数器回到0时才释放该计数。但是即使如此,我仍然不确定100%可以从活动类中节省多少行。



