管理现有本机移动应用程序中的 Flutter 资源

Bri*_*ian 6 android ios kotlin swift flutter

I\xe2\x80\x99m 使用 flutter 模块来处理现有 iOS 和 Android 应用程序的一小部分不常用的部分。I\xe2\x80\x99m 试图处理内存管理问题。似乎\xe2\x80\x99s没有记录的方法来最好地释放flutter引擎,并且\xe2\x80\x99s因必须使用插件注册器而变得复杂,我相信插件注册器在一些黑色中保留了对引擎的引用盒子。有人有在如此有限的环境中使用模块的经验吗?

\n

在 iOS 上我尝试过以下操作:

\n
    \n
  • 呼吁destroyContextViewDidDisasppear
  • \n
  • 在VC中初始化Flutter Engine并设置为nil onViewDidDisappear
  • \n
  • 在 AppDelegate 上初始化 VC 之外的 Flutter Engine 并在 ViewDidDisappear 上设置为 nil
  • \n
  • 创建Flutter VC时尝试了创建引擎和非指定引擎
  • \n
\n

在 Android 上,我使用 FlutterView 并尝试了以下操作:

\n
    \n
  • 尝试运行引擎。销毁活动的销毁功能
  • \n
  • 在 destroy 生命周期函数上运行以下代码:
  • \n
\n
private void unhookActivityAndView() {\n   activity.getLifecycle().removeObserver(this);\n   engine.getActivityControlSurface().detachFromActivity();\n   platformPlugin.destroy();\n   platformPlugin = null;\n   engine.getLifecycleChannel().appIsDetached();\n   flutterView.detachFromFlutterEngine();\n   //engine.destroy();\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在上述所有场景中,应用程序似乎都不会释放 Fluter 资源,并且每次我导航回来并重新初始化 flutter 模块时,内存使用量都会上升。

\n

是否有更好的方法来管理 Flutter 资源,以防止该引擎或其他 flutter 资源保留在内存中?

\n