2

put()在我用我的数据列表调用后,我遇到了一个例外。
我知道我之前关闭了盒子是有原因的(deleteAllFiles() 必须关闭)。
我该如何重新打开它?如我所见,关闭后 dataBoxStore 不为空。

我的代码:

dataBoxStore = MyObjectBox.builder().androidContext(this).name("DB").build();

dataBoxStore.close();
dataBoxStore.deleteAllFiles();

final Box<Data> areaLocationBox = dataBoxStore.boxFor(Data.class);
areaLocationBox.put(myList);

例外:

 Caused by: java.lang.IllegalStateException: Store is closed
    at io.objectbox.BoxStore.checkOpen(BoxStore.java:261)
    at io.objectbox.BoxStore.beginTx(BoxStore.java:310)
    at io.objectbox.Box.getWriter(Box.java:107)
    at io.objectbox.Box.put(Box.java:389)
4

2 回答 2

2

使用 ObjectBox 1.3,这变得更简单了。您可以使用静态 BoxStore.deleteAllFiles 方法之一,而无需启动 BoxStore:

BoxStore.deleteAllFiles(context, "DB");
于 2017-12-04T12:43:37.770 回答
1
dataBoxStore.put(myList);

抛出 Store is closed while 和 dataBoxStore 不为空的异常。

我发现是再次启动boxStore来使用它:

dataBoxStore = MyObjectBox.builder().androidContext(this).name("DB").build();

dataBoxStore.close();
dataBoxStore.deleteAllFiles();

dataBoxStore = MyObjectBox.builder().androidContext(this).name("DB").build();
final Box<Data> areaLocationBox = dataBoxStore.boxFor(Data.class);
areaLocationBox.put(myList);
于 2017-11-22T14:56:05.297 回答