【问题标题】:How to close Objectbox Store and delete data files如何关闭 Objectbox 存储和删除数据文件
【发布时间】:2017-11-22 14:13:33
【问题描述】:

使用我的数据列表调用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)

【问题讨论】:

    标签: android objectbox


    【解决方案1】:

    使用 ObjectBox 1.3,这变得更简单了。您可以在不启动 BoxStore 的情况下使用 one of the static BoxStore.deleteAllFiles methods

    BoxStore.deleteAllFiles(context, "DB");
    

    【讨论】:

      【解决方案2】:
      dataBoxStore.put(myList);
      

      抛出Store is closed while and dataBoxStore is not null异常。

      我发现是重新启动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);
      

      【讨论】:

      • 如果有人能找到另一个解决方案,请告诉我。但正如我所见,没有任何功能可以打开 boxStore 而无需再次启动它。
      • 没关系。我刚刚意识到带有Fileparameter 的静态deleteAllFiles 方法实际上不适用于Android。将在即将发布的 1.2.2 版本中考虑这一点。
      • @MarkusJunginger 太好了。那么你现在能把它标记为正确答案吗?
      • 希望在几个小时内被弃用... :-)
      • @MarkusJunginger 解决了吗?如果是,请更新答案或将其标记为当前答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      相关资源
      最近更新 更多