2013-03-27 75 views
0

我們正在開發一個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()永遠不會被調用,我們應該關閉數據庫對象,並且是打開和關閉的最佳策略?

回答

0

您可以在應用程序類中創建Lazy load singleton實例,並在啓動Activity的OnCreate方法中將其打開(打開),並在onDestroy中關閉它。

相關問題