flutter - 通过 MethodChannel 传递 Isolate/ControlPort
问题描述
在我们的颤振应用程序中,我们正在做一些后台处理。为此,我们需要在我们的本机代码中创建新的颤振隔离,以便我们可以在活动未打开时运行代码,基于本指南:https ://medium.com/@chetan882777/initiating-calls-to-dart-from -带有flutter-plugin-7d46aed32c47的背景中的本机侧
现在,为了不重复代码并且不引起任何并发问题,我们还希望能够从主 Flutter UI 隔离中访问该后台处理隔离。这样我们就可以从原生代码和 Flutter UI 代码开始处理。
但是,本机似乎没有办法将此 Isolate / ControlPort 传递给主 UI 端,以便与它进行通信。有没有办法可以实现这一点(从本机和 UI 端与同一个 Isolate 通信)?
据我所知,这样做的唯一方法是要求本地人成为双方之间的经纪人(将任务发送给本地人,然后本地人将其发送回另一方),但是对于一个颤振来说似乎很麻烦和另一个颤振说话。
解决方案
解决方案是IsolateNameServer。
一侧可以调用IsolateNameServer.registerPortWithName()
,然后另一侧可以通过以下方式向该端口发送消息IsolateNameServer.lookupPortByName()
推荐阅读
- rust - HRTB 的奇怪行为
- python - 如何在 PyQt5 中设置布局的固定高度?
- android - 将序列化对象传递给片段
- r - R - 事后卡方 - 不再支持“fifer”包?
- javascript - 为什么浏览器会区分带有 www 或不带 www 的 URL?
- c# - 如何在文本C#中用超链接/锚标记替换带有括号的url
- image - TensorFlow、Keras:测试图像大于训练图像
- laravel - 无法在项目根目录中运行 composer 命令
- python-3.x - 我可以在不调用蜘蛛的情况下使用 Scrapy 吗?
- javascript - 使用 flatMap 订阅 onComplete 永远不会完成