gpt4 book ai didi

multithreading - Flutter 插件异步和线程

转载 作者:行者123 更新时间:2023-12-05 07:25:07 25 4
gpt4 key购买 nike

我有一个使用 methodchannel 调用 Java 插件的 flutter 应用。

我正在尝试了解线程模型和异步行为。所以顺序是这样的... UI 事件处理程序调用 await methodchannel.invoke("Foo", params)。其中将控制权转移给 Java 方法调用处理程序。在那里,我 reply.success 解锁了 Dart 中的等待。 await 返回并且 flutter UI 事件处理程序返回。

在 Java 插件中,我在 result.sucess 之后继续做一些更多的工作。再说2秒。

问题是(我的问题)在那 2 秒内,dart 主线程/UI 被阻塞,即使 flutter 事件处理程序已在 2 秒前返回?这是为什么?我可以从我的 logcat 中看到 dart 和 Java 代码在两个单独的线程中运行。感谢您的回答。

最佳答案

Flutter 默认可以处理单线程任务,但这并不意味着它会停止主线程等待 Future 任务。可以使用 Future 回调来运行并发任务,这些回调可以在任务完成时执行命令,就像使用 Future.then() 时一样。

如果您想深入挖掘,这里有一篇写得很好的文章,涵盖了 Future async tasks in Flutter .

关于multithreading - Flutter 插件异步和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55035528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com