【问题标题】:What's the best practice to close the Store instance in a Flutter app?在 Flutter 应用中关闭 Store 实例的最佳做法是什么?
【发布时间】:2021-09-27 14:46:16
【问题描述】:

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

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

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

在 iOS 中,我们可以使用 applicationWillTerminate(_:)

在应用终止之前执行代码

很遗憾,Flutter 没有为我们提供这样的功能。

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

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

我的问题是……

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

【问题讨论】:

    标签: flutter dart objectbox flutter-objectbox


    【解决方案1】:

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

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

    【讨论】:

    • “另外,在大多数情况下,你应该在不明确关闭商店的情况下离开”意味着如果我的应用程序没有后台操作,那么我不需要关闭商店并让用户终止应用程序商店还开着吗?
    • 是的,因为您确实无法阻止用户随时终止应用程序 :)
    • 谢谢。顺便说一句,ObjectBox getting started doc 在“创建商店”部分的评论中说“不要忘记关闭商店”。所以我想我必须这样做。
    • 好点,我们应该在文档中澄清这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多