【问题标题】:How to keep a global db4o throughout the lifecycle of an android application如何在 Android 应用程序的整个生命周期中保持全局 db4o
【发布时间】:2013-03-27 13:38:15
【问题描述】:

我们正在开发一个 Android 应用程序,它使用 db4o 在多个活动和服务中存储各种对象。我们正在寻找使用 db4o 的最佳方法,特别是何时打开和关闭 db。我们不想在每次存储操作后关闭数据库并在每次检索操作时重新打开它,因为这可能会影响应用程序的速度,因为处理器很难打开和关闭。我们更愿意保留 db4o 的全局状态,以便在应用程序的整个生命周期中使用。

我在这里阅读 global db4o database for multiple activities 将数据库保存在自定义应用程序对象上并在需要时获取实例是个好主意:

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 对象,这是打开和关闭的最佳策略吗?

【问题讨论】:

    标签: android db4o


    【解决方案1】:

    您可以在应用程序类中创建延迟加载单例实例,并在 Launching Activity 的 OnCreate 方法中初始化(打开)它并在 onDestroy 中关闭它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多