dart语言多线程遇到的问题:Isolate.spawnUri(),在真机调试中无法生成隔离

报错原因

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: IsolateSpawnException: Unable to spawn isolate: Unsupported isolate URI: 
未处理的异常:IsolateSpawnException:无法生成隔离:不支持隔离 URI:

安卓调试器中的显示
dart语言多线程遇到的问题:Isolate.spawnUri(),在真机调试中无法生成隔离_第1张图片
直接使用dart来运行则正常
dart语言多线程遇到的问题:Isolate.spawnUri(),在真机调试中无法生成隔离_第2张图片
main.dart

import 'dart:isolate';

main(){
  start_task();
  canteen_task();
  init();
}

//打印时间戳
start_task(){print('先执行的任务---打印爆破前的时间戳:'+DateTime.now().microsecondsSinceEpoch.toString());}
canteen_task() async{
  print('新线程创建----计划启动');
  ReceivePort ayi= await ReceivePort();
  SendPort ayi_son =ayi.sendPort;
  Isolate childIsolate =await Isolate.spawnUri(
      Uri(path: "childIsolate.dart"),
      ['data1','data2','data3'],
      ayi_son
  );

  ayi.listen((message) {
    print("主线程接收数据");
    print("主线程接收的数据下标0的是:$message[0]");
    print("主线程接收的数据下标1的是:$message[1]");
    print("主线程接收的数据下标2的是:$message[2]");

    if(message[1]==1){

    }else if(message[1]==2){
      ayi.close();
      childIsolate.kill();
      print('子线程已经释放');
    }
    });
}
init(){print('项目初始化----消耗时间中------');}

childIsolate.dart

import 'dart:io';
import 'dart:isolate';

main(List<String> args,SendPort mainSendPort){
  ///接收的第一个参数 是主线程发送过来的参数
  ///接收的第二个参数 是主线程发送过来的发送方法---也就是把孩子发过来了,这个孩子能够向他妈哪里发送东西

  ///
  print("新线程接收到的参数:$args");
  ///向孩子他妈哪里发送一个List
  mainSendPort.send(["开始执行操作0",0]);
  ///把孩子吊起来打1秒
  sleep(Duration(seconds: 1));

  ///向孩子他妈哪里发送一个List
  mainSendPort.send(["开始执行操作1",1]);
  ///把孩子吊起来打1秒
  sleep(Duration(seconds: 1));

  ///向孩子他妈哪里发送一个List
  mainSendPort.send(["开始执行操作2",2]);
  ///把孩子吊起来打1秒
  sleep(Duration(seconds: 1));
}

你可能感兴趣的:(dart)