flutter 必须知道的Dart中线程设计以及异步的实现

前言

做过Android原生开发的同学都知道,在安卓原生开发中有主线程(也叫UI线程)和工作线程的概念,诸如像网络请求、IO操作等的耗时操作,为了避免产生ANR(应用程序无响应)我们都会放到单独创建的工作线程中去处理,这样一来负责UI渲染的主线程的运行就不受影响了,用户看到的界面也就不会有任何的卡顿挂起了,另一方面Android原生中系统要求所有UI的更新是必须在主线程中完成的,因此如果工作线程中的某个操作需要更新UI界面,我们必须通知给主线程去完成,一旦直接在工作线程中去更新UI则会报异常,因此在Android中就有一个重要的概念叫线程间通信,同时也把在工作线程中处理耗时操作的过程称为异步处理,这里的异主要指的是不同的线程。

然而众所周知Dart是单线程模型(此处特指dart中线程的设计思路,并不等于只能存在一个线程),Dart中同一时刻只执行一个操作,其他操作在该操作之后执行,这意味着只要一个操作正在执行,它就不会被其他 Dart 代码中断,并且之后的操作也无法被执行,基于Dart这种单线程模型的设计我们很难像Android原生那样针对耗时操作去创建一个单独的线程去完成,那么在Flutter中我们该如何实现类似的异步处理呢,即所谓的异步编程呢,答案是使用Future。

Future的异步处理(非多线程方式)

在Flutter中系统为我们提供了一个抽象类Future用来专门处理异步任务,那么他具体是如何做到不阻塞主线程的运行的呢?

通过上面的分析我们知道Android原生处理异步任务的方法就是创建多线程,从而保证主线程的运行不受耗时任务的影响,那么在单线程设计模

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智玲君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值