1

我正在使用 ObjectBox 数据库构建一个 Flutter 应用程序。

应用调用openStore(); 在启动时,并将 Store 实例保存在单例类中,以便我可以从任何地方访问它。

但我不确定何时调用store.close();

在 iOS 中,我们可以使用applicationWillTerminate(_:)在应用程序终止之前执行代码

不幸的是,Flutter 并没有为我们提供这样的东西。

我在预期寿命最长的 StatefulWidget 中尝试了下面的代码,但它有时会更快地处理,并且应用程序无法访问数据库。

@override
void dispose() {
  StoreHelper().store?.close();
  super.dispose();
}

我的问题是...

  1. 调用store.close()的最佳做法是什么?
  2. 如果我不关闭商店会怎样?我的应用程序会失去数据持久性吗?
4

1 回答 1

3

你在做什么对我来说似乎没问题。您可以将其稍微更改为StoreHelper().close()也将清除将其 Store 引用设置为null,在这种情况下,如果应用程序的其他部分仍试图访问,您可以处理它(识别它已关闭或重新打开它)。

此外,在大多数情况下,您应该在不明确关闭商店的情况下离开。除非您正在执行(许多)后台写入操作,在这种情况下您可能应该尝试至少等待它在dispose().

于 2021-07-20T07:06:08.230 回答