例如,在使用 http 包或进行常规 IO 操作时出现抖动
import 'package:http/http.dart' as http;
http.Response response = await http.get(url);
if (response.statusCode == 200) {
var json = jsonDecode(response.body);
}
Run Code Online (Sandbox Code Playgroud)
主应用程序 dart 代码在 UI Task Runner 线程上运行。IO 任务运行器似乎只是让 dart 引擎读取图像处理耗时的图像 IO 而不是应用程序 IO 发生的地方?
我知道 IO 库具有基于 Future 的无阻塞接口,因此我提供给 IO 库的回调将在 UI 线程上运行,但是实际的 IO 操作本身是否存在 Dart VM 用于执行这些操作的操作系统线程操作?
例如,如果我尝试上传/下载一个 800MB 的视频文件,是否有 Dart VM 使用的后台 IO 线程执行实际 IO?
是否应该将单独的隔离用于大型 IO 操作,例如上传/下载大文件?