由于某种原因,当我尝试播放音频时,以下代码会冻结主线程。我已经尝试了从调度到另一个线程的所有内容,但这并没有做太多。我甚至尝试在异步中运行队列,但是当用户在第一个完成加载之前单击另一个音频文件时,我遇到了问题。关于使用哪个线程的任何提示?
let serialQueue = DispatchQueue(label: "queuename")
serialQueue.sync {
if (jukeboxPlayer.jukebox != nil) {
if let playingURL = jukeboxPlayer.jukebox?.currentItem?.URL {
jukeboxPlayer.jukebox?.removeItems(withURL: playingURL)
}
jukeboxPlayer.jukebox?.append(item: JukeboxItem(URL: url), loadingAssets: true)
} else {
jukeboxPlayer.jukebox = Jukebox(delegate: self, items: [
JukeboxItem(URL: url),
])
}
print("3.0")
jukeboxPlayer.jukebox?.play()
print("==========Started playing===========")
self.showPlayer()
}
也尝试过:
serialQueue.sync {
和
DispatchQueue.global(qos: .background).async {
这是我使用的框架: