在Hive Flutter中,什么时候应该调用box.close()?是否有必要?

fumotvh3  于 2022-11-30  发布在  Flutter
关注(0)|答案(2)|浏览(126)

使用Hive for Flutter,在我打开 Package 并使用它之后,我是否应该拨打:

box.close()

在我仍然需要使用该框的情况下关闭它,让它打开是否会影响性能,或者我是否应该在应用程序中忽略关闭它?

yshpjwxd

yshpjwxd1#

虽然始终关闭Hive框可能是一个很好的做法,但如果您愿意在应用中的某个时候再次打开它,则实际上不需要关闭它。
当您在应用程序中完全使用该框时,您应该关闭该框,因为它不再会打开。

box.close();

来自官方Hive文档:
如果您不再需要某个框,则应将其关闭。该框的所有缓存键和值都将从内存中删除,并且在所有活动的读写操作完成后关闭该框文件。
还有:
在应用程序运行时打开一个框是完全可以的。如果您将来再次需要一个框,只需将其打开即可。
所以你不应该真的关心离开你的盒子打开,如果你仍然需要它,你的应用程序仍然会工作正常,性能良好。
如果你在盒子数据增长时遇到一些操作缓慢的问题,考虑使用lazyBox而不是box。当lazyBox被打开时,它的所有键都被读取并存储在内存中。一旦你访问一个值,Hive就知道它的确切位置:

await Hive.openLazyBox('myLazyBox');
final lazyBox = Hive.lazyBox('myLazyBox');
final value = await lazyBox.get('lazyVal');
isr3a4wc

isr3a4wc2#

已经为这个问题打开了一个ticket,如果是框架问题,你通常可以在github上浏览一下。

相关问题