swift - 如何使用 WKURLSchemeHandler 提供大文件?
问题描述
我WKURLSchemeHandler
用来提供无法由WkWebView
. 虽然它适用于像视频这样的小文件,但当它必须提供像视频这样的大文件时,它会完全冻结应用程序。
现在,我正在一步读取完整文件,这不适合重要文件。
data = try Data(contentsOf: fileUrl)
我应该怎么做才能避免这种情况?有没有办法“流式传输”文件的内容?
解决方案
didReceive(Data)
很特殊,可以用部分数据多次调用,因此可以进行分块读取/流式传输。从文档中看并不明显,但他们在他们的演示文稿中表示方案处理程序功能(见 32:30):https ://developer.apple.com/videos/play/wwdc2017/220/
此外,WKURLSchemeTask
的函数可以在后台线程上调用,无需在主线程上执行(并且可能会阻塞 UI)。
推荐阅读
- javafx - xxhdpi Android javafxports 应用程序上的动画“重影”
- oracle - 为什么在我的程序中没有打印更新的正确值?
- reactjs - ReactJs 将方法作为道具从一个类传递到下一个类(使用打字稿)
- css - R Pagedown resume/cv 标题的小写字母
- json - 在 react-native 中获取数据 json
- reactjs - 模态不会显示,但应用程序没有显示任何错误
- mysql - mysql,在查询或插入命令后,是否可以获得有关 cpu 使用率和内存的统计信息?
- django - 平均查询集
- mongodb - 升级到 Spring Boot Mongodb 2.2.X 隐藏 GeoNear Aggregate 管道结果超过 100 条记录
- regex - Bash:从测试字符串中提取第二个整数