Flutter isolate应用

提示:阅读此文章之前,需要对同步,异常,多线程等概念有基本的理解。

目录

前言

一、isolate是什么?

二、isolate代码实践

1.创建一个倒计时计时并展示在界面上

2.创建模型解析

 3.定义isolate

总结


前言

        在开发过程中遇到处理一些计算量大的操作或网络请求或解析数据时通常会使用异步方法Future来尝试解决处理数据导致UI更新卡顿甚至卡死的问题,但如果数据量大的话使用Fluture异步方法后还是会导致卡顿或卡死现象,这个时候就需要用到另一个异步方法,也就是本次讲解的内容isolate,通过开辟一个单独isolate来独立执行耗时任务,然后通过消息机制把最终计算结果发送给主isolate实现UI的更新。


一、isolate是什么?

        isolate可以理解为是概念上Thread线程,Dart 是单线程的并且 Flutter 依赖于 Dart,在Dart中并不是叫Thread ,而是有个专门名词叫 isolate,也可以直接理解为是 Dart 中的线程。

        isolate和Thread都是会去创建一个OSThread,也就是说最终都是委托创建操作系统层面的线程。isolate与线程的区别就是线程与线程之间是共享内存的,而isolate和 isolate之间是内存不共享的。 两个Isolate完全是两条独立的执行线,且每个Isolate都有自己的事件循环,它们之间只能通过发送消息通信,所以它的资源开销低于线程。

二、isolate代码实践

举个例子:我们在计时展示秒数时接收到了一个数据需要我们解析;

效果图:

1.创建一个倒计时计时并展示在界面上

代码如下:

  //创建计时器
  Timer? _timer;
  //展示的秒数
  int second = 0;
@override
  void initState() {
    _timer = Timer.periodic(Duration(seconds: 1), (timer) {
      if (mounted) {
        setState(() {
          second++;
        });
      }
    });
    super.initState();
  }
@override
  void 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值