【发布时间】:2011-11-21 08:19:33
【问题描述】:
我正在尝试使用 ORMLite 包创建一个 android 应用程序。我有一些活动和服务,还使用https://github.com/tomquist/Android-Error-Reporter 能够接收来自客户 PDA 的错误。 ORMLite 要求所有活动和服务扩展 OrmLiteBaseActivity 等或向每个活动添加适当的代码,以便能够在活动完成后获取数据库助手并释放它。因此,将此代码添加到每个活动或服务中并不是很方便。我也有一些可以使用数据库的辅助类
我还有一个包含一些全局信息和方法的应用程序类。所以我决定在应用程序类中打开 ormlite 助手,并在所有活动/类中使用它,如下所示:
public class MyApplication extends Application {
private volatile DatabaseHelper databaseHelper = null;
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onTerminate() {
if (databaseHelper != null) {
OpenHelperManager.releaseHelper();
databaseHelper = null;
}
super.onTerminate();
}
public DatabaseHelper getHelper() {
if (databaseHelper == null) {
databaseHelper = OpenHelperManager.getHelper(this, DatabaseHelper.class);
}
return databaseHelper;
}
}
并以这种方式在其他类中使用它:
((MyApplication) getApplicationContext()).getHelper();
您认为以这种方式使用它是一个好主意,还是可能存在一些内存泄漏或其他问题?我担心 onTerminate 永远无法在真实设备上运行......我正处于“尝试新东西”的阶段,所以想听听任何关于此的 cmets 以消除我将来可能会遇到的问题,方法错误且没有重写代码。
【问题讨论】: