在静态方法中传递BuildContext是否会导致Flutter中的内存泄漏?

问题描述 投票:1回答:1

我正在尝试显示一个对话框,该对话框可在我的应用程序中的任何地方重用。该对话框需要BuildContext,因此我创建了一个类并添加了一个静态方法来显示该对话框,并在该静态方法中传递了一个BuildContext作为参数。这会导致内存泄漏吗?就本机Android而言,我知道如果静态方法返回UI,则在静态方法内传递活动上下文会导致方法泄漏。

flutter dart
1个回答
0
投票

可能是。这将防止垃圾收集器从该对象释放内存。根据this dart-lang issue中的答案,只要有可访问的参考-该对象将保留在内存中。

因此,通常不建议将BuildContext对象存储在静态字段中。

但是如果您获得BuildContext的顶部小部件,并且该小部件不会在应用程序的生命周期内重新创建-应该没问题。如果可能要处置它-覆盖dispose()方法,并通过分配null值清除引用。

根据长期存在的异步任务-我不建议将它们传递给BuildContext,因为只要执行任务,它肯定会导致内存泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.