【问题标题】:How can I get Flutter to handle true background processing?如何让 Flutter 处理真正的后台处理?
【发布时间】:2021-07-26 23:42:23
【问题描述】:

我的首席开发人员与我聊了聊我们在使用 Flutter 时遇到的一个问题。我们正在构建一个移动应用程序,现在我们遇到了一个关于线程的潜在问题。他说 Flutter 在设计上通常是单线程的。他认为他可以让多个线程工作,但他无法思考如何让线程相互通信。

我们需要的是真正的后台处理,其中一些东西可以完全交给一个单独的线程来运行,然后无论应用程序在哪里,都可以从该线程接收通知,以便能够正确刷新 UI 状态。

一个简化的例子是:

  • 用户上传图片
  • 图像在不同的线程中处理
  • 徽章显示“正在处理图像”之类的内容
  • 图像处理线程完成
  • 徽章消失

在此示例中,徽章/UI 线程必须从图像处理线程发送一些内容。我们如何用 Flutter 解决这个问题?

【问题讨论】:

    标签: multithreading flutter flutter-layout flutter-dependencies


    【解决方案1】:

    您可以使用带有发送端口和接收端口的隔离来在 Ui 线程和隔离之间进行通信。

    Flutter Isolate Example

    这是一个更强大的插件,可帮助您在隔离中使用插件flutter_isolate: ^2.0.0

    【讨论】:

    • 该视频暗示基本上将有状态小部件的“昂贵”逻辑从主线程移至 Isolate(bkg 线程),然后返回主线程并使用计算数据。该工作流程仍然是 I/O 阻塞。数据处理跨线程移动,以防止 UI 线程变得忙碌并造成应用程序无响应的感觉。我们需要的是真正的后台处理,其中可以将某些东西交给单独的线程来运行,然后无论应用程序在哪里,都可以从该线程接收通知,以便能够正确刷新 UI 状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多