【小程序】安卓端InnerAudioContext无法销毁
场景:swiper切换时,切换后播放对应item里的音频,使用wx.createInnerAudioContext播放音频。由于每个item都需要维护自己的暂停、播放状态,所以这里InnerAudioContext都单独创建在这些item的组件里。问题:当快速切换的时候,安卓端无法使用InnerAudioContext.destroy方法销毁之前的音频,导致几条音频同时一直在播放。在iOS端是正常
·
场景:
swiper切换时,切换后播放对应item里的音频,使用wx.createInnerAudioContext播放音频。由于每个item都需要维护自己的暂停、播放状态,所以这里InnerAudioContext都单独创建在这些item的组件里。
问题:
当快速切换的时候,安卓端无法使用InnerAudioContext.destroy方法销毁之前的音频,导致几条音频同时一直在播放。
在iOS端是正常,所以一开始以为是性能问题,但是在同事的比较新的安卓手机测试也出现有这样的问题,而且是100%复现。
解决:
destroy改成stop即可。
playId: {
handler(val) {
if (val != this.item.index) {
try {
this.innerAudioContext.stop()
throw '不是这条'
} catch (err) {
}
console.log('停止播放')
} else {
this.innerAudioContext = wx.createInnerAudioContext();
this.innerAudioContext.loop = true
wx.setInnerAudioOption({
obeyMuteSwitch: false
})
this.innerAudioContext.src = this.item.smsMusicLib ? encodeURI(this.item.smsMusicLib
.audioUrl) : ''
this.autoPlay = true
try {
this.innerAudioContext.play()
} catch (e) {
//TODO handle the exception
}
console.log('开始播放');
}
},
immediate: true,
deep: true
},
更多推荐
已为社区贡献1条内容
所有评论(0)