我使用WKURLSchemeHandler为WkWebView无法直接读取的本地文件提供服务。虽然它对视频这样的小文件工作得很好,但当它必须提供视频这样的大文件时,它会完全冻结应用程序。
现在,我正在单步读取完整的文件,这对于重要的文件是不合适的。
data = try Data(contentsOf: fileUrl)我该怎么做才能避免这种情况呢?有没有办法“流式传输”文件的内容?
发布于 2020-10-02 05:20:07
didReceive(Data)是特殊的,可以对部分数据多次调用,因此可以进行分块读取/流式处理。这在文档中并不明显,但他们在方案处理程序特性的演示文稿中这样说(见32:30):https://developer.apple.com/videos/play/wwdc2017/220/
此外,WKURLSchemeTask的函数可以在后台线程上调用,而不需要在主线程上执行(并且可能会阻塞UI)。
https://stackoverflow.com/questions/58217566
复制相似问题