我正在从事一个设计项目,我需要一些关于 db4o 的指导,因为这是我第一次使用它。在该项目中,我们有一个 Android 应用程序,它有多个 Activity ,并且所有 Activity 都使用相同的数据库。在阅读和谷歌搜索后,这些数据库的打开和关闭对处理器来说很困难,因此在每个 Activity 中打开和关闭是不合理的。
如何打开和关闭在整个应用程序生命周期中需要使用的 db4o 数据库?我何时/何地调用开盘和闭盘?
编辑:我需要在应用程序中设置退出/关闭按钮来决定何时调用关闭数据库方法吗?
最佳答案
由于我的 Android 知识有限,我不能 100% 确定这是否有效。
自定义应用程序对象 您可以注册您的自定义应用程序对象。请参阅here 。该对象可以进行生命周期回调,在您的应用程序启动或终止时调用。它在各种 Activity 中保持活力。
因此,创建您自己的应用程序来扩展 android.app.Application:
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;
}
}
然后使用以下方式注册该对象:
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:name="my.packages.MyApplication">
然后您可以在 Activity 中的任何时间使用以下实例:
MyApplication app = (MyApplication) getApplication();
ObjectContainer container = app.database();
静态单例
另一种解决方案是经典的“静态”单例。只要您的应用程序正在运行,就会加载相同的类实例。所以它会让容器保持活力。
关于java - 用于多种 Activity 的全局 db4o 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225485/