美文网首页
2021-04-01 flutter多线程isolate

2021-04-01 flutter多线程isolate

作者: 没有钱也很认真 | 来源:发表于2021-04-01 17:58 被阅读0次

    dart的设计模式是以单线程设计,所以,众所周知,当遇到计算比较繁杂的数学逻辑运算时,最好把它们放到多线程当中。原始的多线程使用过于繁琐,且不如框架用的好些,这里介绍一下这里用到的三方库。就叫做:

    isolate: ^2.0.0

    使用方法:

    第一步:LoadBalancer loadBalancer=LoadBalancer.create(4,IsolateRunner.spawn);这里尽量避免多次调用,每次调用会创建4条线程,但它的关闭不需要管,会自动关闭。

    第二步:ApiResponse,List

    final lb =await loadBalancer;

    ApiResponse res =await lb.run <ApiResponse,List>(handleCounter,     [method,param,]);这里<>中ApiResponse为返回值,List为handleCounter方法的请求参数。

    第三步:在方法体handleCounter中耗时操作;

    static Future<ApiResponse> handleCounter(List list) async {

    ApiResponse response =await HttpUtils.requestIsolate(list[0],data: list[1]);

    if(response.isResultSuccess()){

    if(response.data!=null){

    }

    }

    return response;

    }

    注意:flutter的多线程不能共享内存,因此像操作数据库、shareperence、获取手机设备等等操作好像都不行,会出现以下报错日志。如果有高手有办法,请留言。

    If you're running an application and need to access the binary messenger before `runApp()` has been called (for example, during plugin initialization), then you need to explicitly call the `WidgetsFlutterBinding.ensureInitialized()` first

    相关文章

      网友评论

          本文标题:2021-04-01 flutter多线程isolate

          本文链接:https://www.haomeiwen.com/subject/pbatkltx.html