2013-03-27 2 views
0

우리는 db4o를 사용하여 다양한 액티비티와 서비스에 다양한 오브젝트를 저장하는 안드로이드 애플리케이션을 개발하고 있습니다. 우리는 db4o로 작업 할 때 최선의 방법을 찾고 있으며 특히 db를 열고 닫을 시점을 찾고 있습니다. 우리는 각 단일 저장소 작업 후에 db를 닫고 모든 검색 작업에서 다시 열기를 원하지 않습니다. 이는 프로세서의 열기 및 닫기가 어렵 기 때문에 응용 프로그램의 속도에 영향을 줄 수 있기 때문입니다. 우리는 앱 라이프 사이클 전반에 걸쳐 사용할 수있는 db4o의 글로벌 상태를 유지하는 것을 선호합니다.안드로이드 애플리케이션의 라이프 사이클 전반에 걸쳐 글로벌 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 개체를 닫아야하고 개폐에 최고의 전략은 무엇입니까?

답변

0

응용 프로그램 클래스에서 지연로드 싱글 톤 인스턴스를 만들고 Launching Activity의 OnCreate 메서드에서 초기화 (열기)하고 onDestroy에서 닫을 수 있습니다.

관련 문제