Flutter中@pragma(vm:entry-point)代码的运行Isolate与Engine疑问
flutter_overlay_window中overlayMain的执行环境问题
1. Isolate执行环境
带@pragma("vm:entry-point")注解的overlayMain函数,是在全新的独立Isolate里执行的。悬浮窗需要脱离主应用的生命周期单独运行,所以包内部会创建新Isolate来承载它的Dart逻辑,确保主Isolate销毁时,悬浮窗不会跟着停止运行。
2. Flutter Engine运行环境
overlayMain对应的代码运行在单独的Flutter Engine实例中。在Android平台上,每个Flutter Engine对应一个独立的FlutterView,悬浮窗作为独立窗口,需要单独初始化一个Flutter Engine来渲染UI、处理逻辑,与主应用的Engine完全隔离。
参考资源
- Dart官方Isolate说明:Isolate是Dart的并发执行单元,每个Isolate拥有独立的内存堆和事件循环,与其他Isolate互相隔离,不会共享内存。
- flutter_overlay_window源码实现:包通过Android原生代码创建新的FlutterEngine实例,绑定到悬浮窗的Window,并指定
overlayMain作为该Engine的Dart入口点。
内容的提问来源于stack exchange,提问作者Saurabh Kumar
相关产品推荐
相关产品推荐

