我們正在開發一個Android應用程序,該應用程序使用db4o在多個活動和服務中存儲各種對象。我們正在尋找使用db4o的最佳方法,特別是何時打開和關閉數據庫。我們不希望在每次單獨存儲操作後關閉數據庫,並且在每次檢索操作時重新打開數據庫,因爲這會影響應用程序的速度,因爲處理器上的打開和關閉很困難。我們更喜歡保持整個應用程序生命週期中可以使用的db4o的全局狀態。如何在android應用程序的整個生命週期中保持全局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()永遠不會被調用,我們應該關閉數據庫對象,並且是打開和關閉的最佳策略?