小编sta*_*264的帖子

从后台线程播放 AVAudioPlayer 实例有时会失败

我正在尝试使用 Swift 5 中的 AVAudioPlayer 实例从后台线程播放声音。大多数时候,它会成功。但有时音频播放器无法播放声音。

\n\n

看起来好像连续调用 play() 两次,或者调用prepareToPlay() 然后连续调用 play() 以某种方式解决了问题,但这对我来说似乎不是一个好的解决方案,因为我担心这仍然不能解决问题不保证一定能播放成功。

\n\n
func setUpAudio() {\n    AVAudioSession.sharedInstance().perform(NSSelectorFromString("setCategory:error:"), with: AVAudioSession.Category.playback)\n    try! AVAudioSession.sharedInstance().setActive(true)\n    NotificationCenter.default.addObserver(self, selector: #selector(handleInterruption), name: AVAudioSession.interruptionNotification, object: nil)\n}\n\nfunc startNewAudio() {\n    let destinationData = Destinations.getDestinations()\n    var audio = destinationData[currentStop]!["audio"] as! String\n    if inTransit {\n        audio = destinationData[Paths.tourOrder[currentIndex + 1]]!["transit_audio"] as! String\n    }\n    let sound = NSURL(fileURLWithPath: Bundle.main.path(forResource: audio, ofType: "mp3", inDirectory: "audio")!)\n    try! audioPlayer = AVAudioPlayer(contentsOf: sound as URL)\n    audioPlayer.delegate = self\n    currentTime = 0\n    setPlay()\n}\n\nfunc setPlay() {\n    paused = …
Run Code Online (Sandbox Code Playgroud)

avaudioplayer ios swift ios-multithreading dispatch-queue

3
推荐指数
1
解决办法
3960
查看次数

Flask-SocketIO 中的后台任务

我有一个非常简单的问题,但我还没有\xe2\x80\x99t找到一个非常简单的答案:何时应该使用start_background_task()而不是启动Python线程\xe2\x80\x9cnormally\xe2\x80\x9d?Flask-SocketIO 文档指出:

\n\n
\n

该函数返回一个与Python标准库中的Thread类兼容的对象。该函数已调用该对象的 start() 方法。

\n
\n\n

它并没有过多说明是否有必要在初始化和启动每个模块的线程时使用它threading

\n

python multithreading flask flask-socketio

3
推荐指数
1
解决办法
4696
查看次数