我们正在开发一个 Android 应用程序,它使用 db4o 在多个活动和服务中存储各种对象。我们正在寻找使用 db4o 的最佳方法,特别是何时打开和关闭 db。我们不想在每次存储操作后关闭数据库并在每次检索操作时重新打开它,因为这可能会影响应用程序的速度,因为处理器很难打开和关闭。我们更愿意保留 db4o 的全局状态,该状态可在应用程序的整个生命周期中使用。
我在这里为多个活动阅读 全局 db4o 数据库, 这是将数据库保存在自定义应用程序对象上并在需要时获取实例的好主意:
public class MyApplication extends Application {
private volatile ObjectContainer container;
@Override
public void onCreate() {
super.onCreate();
// the application object is a regular Android context,
// So you can get the required info`
this.container = Db4oEmbedded.openFile(...)
}
@Override
public void onTerminate() {
super.onTerminate();
// if something was not finished, better rollback
container.rollback();
container.close();
}
public ObjectContainer database(){
return container;
}
}
但是,我意识到应用程序的onTerminate()方法仅用于仿真目的,从未在实际手机上执行。我的问题是,如果从不调用 onTerminate() 我们应该在哪里关闭 db 对象,这是打开和关闭的最佳策略吗?