销毁对象箱数据库

时间:2019-06-18 13:27:56

标签: android kotlin objectbox

我目前正在通过android应用中的koin依赖注入来使用objectbox。它工作正常,但是我需要重新初始化我的DI,因此我需要先销毁boxStore。这是因为我通过DI初始化了盒子,如果不销毁当前的BoxStore,则无法创建新盒子。

我找到了类似的帖子How to close Objectbox Store and delete data files,但是它并没有解决我的问题。

我尝试调用deleteAllFiles,但是出现错误。

        BoxStore.deleteAllFiles(context, (BoxStoreBuilder.DEFAULT_NAME))

        BoxStore.deleteAllFiles(context, null)

我收到错误消息:

java.lang.IllegalStateException:无法删除文件:存储仍处于打开状态

这是上面提到的代码行。任何建议都会很有帮助

2 个答案:

答案 0 :(得分:0)

解决方案:

我必须分别访问我的每个框并一次将其删除。

fun clearAll(){
    firstBox.box.removeAll()
    secondBox.box.removeAll()
    ....... 
}


fun closeAll(){
    firstBox.box.close()
    secondBox.box.close()
    ....... 
}

答案 1 :(得分:0)

您可以仅关闭boxStore,然后删除所有文件:

boxStore.close();
boxStore.deleteAllFiles();

还有一个static method用于删除所有文件(如果要在打开boxStore之前删除所有文件)

这是最有效的方法。

参考:https://github.com/objectbox/objectbox-java/issues/317