因此,我将ObjectBox与名为LibGDX的库一起使用,该库是用Java编写的跨平台游戏库。它通过在单个Android Activity类中加载类似于Java applet的方式工作,但是所有工作都在applet中完成,而在Android中则没有(除了实例化Activity之外)。

因此,我的objectBox代码使用Java,无法使用上下文。因此,我跑步

boxStore = MyObjectBox.builder().androidContext(this).build();


每次在应用程序启动时创建数据库对象时,我都会运行以下代码。

private void createMyObjectBox() throws IOException {
    FileHandle fileHandle = Gdx.files.local("objectstorefile");
    if(!fileHandle.isDirectory()) {
        fileHandle.mkdirs();
    }
    store = MyObjectBox.builder().directory(boxStoreDir).build();
}


我崩溃了,如果我启动我的应用程序,然后立即按下主页按钮,然后再次启动它。我认为仍然存在一个残留的MyObjectBox对象,这可能是由于Android和静态对象等的性质导致的,尚未完全处理掉。

我不确定如何才能对此进行测试以避免错误。

最佳答案

每个目录在任何时间都应该始终只有一个MyObjectBox实例。因此,您应该关闭旧存储(store.close()),或者只是保持存储处于打开状态(例如,单例,静态,...)。通常首选后者,因为它更简单,更有效。

更新:非Android代码示例

static BoxStore store;
public static BoxStore getStore() {
    if(store == null) store = createMyObjectBox();
    return store;
}

10-04 14:51