2012-11-05 20 views
1

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

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

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

回答

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(); 

Static-Singleton

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

+0

谢谢你的回应,我尝试使用张贴的方式,并从小教程,但我最终试图使用单身人士,我有另一个帖子,因为我也遇到了麻烦! :( – user1799107