播放连续短音无滞后UI动画

Play continuous short sound without lagging UI animation

故事是这样的。

我有一个计时器,当我点击一个按钮时,timer.setEventHandler 会呈现动画(类似于每 125 毫秒在 UI 中添加 10 个圆圈)。动画运行流畅,到目前为止一切顺利。

现在我想在每次添加圆圈时添加声音(声音像哔哔声一样播放 10 毫米,但来自 mp3 文件)。我尝试了 2 种方法:

  1. AudioServicesPlaySystemSound

    动画流畅,但声音播放不均匀。至少声音播放不会落后于UI。

  2. 使用AVAudioPlay

    我在单例中准备了 AVAudioPlay 实例 class 并且每次动画逻辑在 DispatchedQueue 中调用 play() 以确保声音在单独的线程中播放。第一次按下按钮时,动画滞后。但是,当我在动画完成后短时间(2 秒内)再次按下按钮时,动画和声音将完美播放。但是,如果我在播放最后一个声音后等待更长的时间,例如 10 秒,动画会滞后并且声音会突然爆发。

我想知道 iOS(我是 运行 iOS 10 on iPad Air 2)是否真的让 AVAudioPlay 实例在不活动时进入睡眠状态。除非我在播放最后一个声音后的短时间内(2 秒)按下按钮,否则 AVAudioPlay 线程将一直处于活动状态。

有什么想法吗?

我明白了。

使用定时器每 1 秒以 0 音量永远播放声音以保持音频会话活跃。这听起来很愚蠢,但它很有魅力!