2012-11-05 2 views
1

디자인 프로젝트를 진행하고 있으며 db4o에 대한 지침이 필요합니다. 처음 작업 한 이래로 db4o에 대한 지침이 필요합니다. 프로젝트에서 우리는 여러 활동을 가지고 있으며 모두 동일한 데이터베이스를 사용하는 Android 앱을 보유하고 있습니다. 독서와 인터넷 검색을 통해 이러한 데이터베이스의 시작과 종료가 프로세서에서 어렵 기 때문에 각 활동 내에서 열고 닫는 것은 불합리합니다.여러 활동을위한 db4o 데이터베이스 db3o

응용 프로그램 수명 기간 동안 사용해야하는 db4o 데이터베이스를 열고 닫는 방법은 무엇입니까? 언제 어디에서 전화를하고 닫을 수 있습니까?

편집 : 닫기 데이터베이스 방법을 호출 할 때 앱에 나가기/닫기 버튼이 필요합니까?

답변

0

안드로이드에 대한 지식이 제한적이므로이 방법이 작동하는 경우 100 %가 아닙니다.

사용자 지정 응용 프로그램 개체 사용자 지정 응용 프로그램 개체를 등록 할 수 있습니다. here을 참조하십시오. 이 객체는 앱이 시작되거나 종료 될 때 호출되는 라이프 사이클 콜백을 수행 할 수 있습니다. 그것은 활동 전반에 걸쳐 살아 있습니다.

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; 
    } 

} 

그런 다음에 그 객체 등록 :

그래서, android.app.Application 확장 자신의 응용 프로그램 만드는 그런

<application android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:name="my.packages.MyApplication"> 

을 할 수 있습니다 당신의 활동에 언제든지 인스턴스 로 :

MyApplication app = (MyApplication) getApplication(); 
ObjectContainer container = app.database(); 

정적 - 싱글

다른 해결책은 고전적인 '정적'싱글 톤이 될 수 있습니다. 응용 프로그램이 실행되는 동안 동일한 클래스 인스턴스가로드됩니다. 그래서 그것은 컨테이너를 살아있게 할 것입니다.

+0

응답 해 주셔서 감사합니다. 게시 된 방식과 작은 자습서에서 사용하려고 시도했지만 싱글 톤을 사용하려고했으나 결국 그 문제가 발생하여 다른 게시물을 가지고 있습니다. :( – user1799107