用于多个活动的全局db4o数据库

时间:2012-11-05 03:15:49

标签: java db4o

我正在开发一个设计项目,我需要一些db4o的指导,因为这是我第一次使用它。在该项目中,我们有一个Android应用程序,它具有多个活动,并且所有活动都使用相同的数据库。在阅读和谷歌搜索后,处理器很难打开和关闭这些数据库,因此在每个活动中打开和关闭都是不合理的。

如何打开和关闭需要在整个应用程序生命周期中使用的db4o数据库?何时/何地我打电话给开放和关闭?

编辑:我是否需要在应用程序中使用退出/关闭按钮来何时调用close数据库方法?

1 个答案:

答案 0 :(得分:0)

如果这样可行,我不是100%,因为我的Android知识有限。

自定义应用程序对象 您可以注册自定义应用程序对象。见here。此对象可以生命周期回调,在您的应用程序启动或终止时调用。它贯穿各项活动。

因此,创建自己的应用程序,扩展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">

然后,您可以在活动中随时使用以下实例:

MyApplication app = (MyApplication) getApplication();
ObjectContainer container = app.database();

<强>静态独体

另一种解决方案可以是经典的“静态”单身人士。只要您的应用程序正在运行,就会加载相同的类实例。所以它会使容器保持活力。