使用Hive for Flutter,在我打开 Package 并使用它之后,我是否应该拨打:
box.close()
在我仍然需要使用该框的情况下关闭它,让它打开是否会影响性能,或者我是否应该在应用程序中忽略关闭它?
yshpjwxd1#
虽然始终关闭Hive框可能是一个很好的做法,但如果您愿意在应用中的某个时候再次打开它,则实际上不需要关闭它。当您在应用程序中完全使用该框时,您应该关闭该框,因为它不再会打开。
box.close();
来自官方Hive文档:如果您不再需要某个框,则应将其关闭。该框的所有缓存键和值都将从内存中删除,并且在所有活动的读写操作完成后关闭该框文件。还有:在应用程序运行时打开一个框是完全可以的。如果您将来再次需要一个框,只需将其打开即可。所以你不应该真的关心离开你的盒子打开,如果你仍然需要它,你的应用程序仍然会工作正常,性能良好。如果你在盒子数据增长时遇到一些操作缓慢的问题,考虑使用lazyBox而不是box。当lazyBox被打开时,它的所有键都被读取并存储在内存中。一旦你访问一个值,Hive就知道它的确切位置:
lazyBox
box
await Hive.openLazyBox('myLazyBox'); final lazyBox = Hive.lazyBox('myLazyBox'); final value = await lazyBox.get('lazyVal');
isr3a4wc2#
已经为这个问题打开了一个ticket,如果是框架问题,你通常可以在github上浏览一下。
2条答案
按热度按时间yshpjwxd1#
虽然始终关闭Hive框可能是一个很好的做法,但如果您愿意在应用中的某个时候再次打开它,则实际上不需要关闭它。
当您在应用程序中完全使用该框时,您应该关闭该框,因为它不再会打开。
来自官方Hive文档:
如果您不再需要某个框,则应将其关闭。该框的所有缓存键和值都将从内存中删除,并且在所有活动的读写操作完成后关闭该框文件。
还有:
在应用程序运行时打开一个框是完全可以的。如果您将来再次需要一个框,只需将其打开即可。
所以你不应该真的关心离开你的盒子打开,如果你仍然需要它,你的应用程序仍然会工作正常,性能良好。
如果你在盒子数据增长时遇到一些操作缓慢的问题,考虑使用
lazyBox
而不是box
。当lazyBox
被打开时,它的所有键都被读取并存储在内存中。一旦你访问一个值,Hive就知道它的确切位置:isr3a4wc2#
已经为这个问题打开了一个ticket,如果是框架问题,你通常可以在github上浏览一下。