私の Android の知識は限られているため、これが機能するかどうかは 100% ではありません。
カスタム アプリケーション オブジェクト カスタム アプリケーション オブジェクト
を登録できます。ここを参照してください。このオブジェクトは、アプリの開始時または終了時に呼び出されるコールバックをライフサイクルできます。アクティビティ全体で生き続けます。
したがって、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();
静的シングルトン
別の解決策は、古典的な「静的」シングルトンです。アプリケーションが実行されている限り、クラスの同じインスタンスがロードされます。したがって、コンテナは存続します。