Flutter 创建 isolate 耗时过长应该如何解决呢?

问题#

  • 当我执行 isolate.spawn 这个方法去创建一个隔离的时候,经常会遇到方法需要长时间等待,这是为什么呢?
  • 如何才能快速得到 isolate.spwan 建立的 isolate 呢?
  • 我尝试在传递的方法 command.params['method'] 中计时,发现他的计算非常快,也就十几毫秒。
  • 当我在 VScode 中调试代码的时候,长时间等待的时候,通过暂停线程、重新启用线程的操作后,isolate 会快速得到执行,让我很是怀疑,这个线程在创建的时候,被挂起了。
  • 我该如何更快的确保 isolate.spawn 得到快速执行,并获取其返回值呢?

    Isolate.spawn 调用的静态方法与参数#

    static startSpo2DeviceParse(IsolateCommandParams sender) {
      return Spo2DeviceParseOption(
        sender.sender,
        device: sender.params['device'],
        caseStateInfo: sender.params['caseinfo'],
      );
    }

    Isolate.spawn 创建过程#

    int begin = DateTime.now().millisecondsSinceEpoch;
      Isolate isolate = await Isolate.spawn(command.params['method'], argparams,
          debugName: command.params['token'],
          errorsAreFatal: true,
          onError: _onError);
      print(
          "Isolate.spawn ${command.params['token']} complete:cost time:${DateTime.now().millisecondsSinceEpoch - begin}");

    Isolate.spawn 执行结果#

    I/flutter (29746): Isolate.spawn parsecore complete:cost time:5882
    I/flutter (29746): Isolate.spawn hubCore complete:cost time:5911
    I/flutter (29746): Isolate.spawn preparse complete:cost time:2071
    I/flutter (29746): Isolate.spawn preparse complete:cost time:2549