7***@qq.com
7***@qq.com
  • 发布:2022-07-10 10:32
  • 更新:2024-11-10 17:13
  • 阅读:2727

uni-app pda扫码音频播放多次后造成卡顿,如何清除音频缓存并重置

分类:uni-app


uni-app 音频播放Android平台不能创建多次uni.createInnerAudioContext()实例,但是实例化一次后多次播报play()事件会导致其他监听事件叠加触发。比如onPlay()和onEnded()都会打印多次,造成页面渲染卡顿。

问题根本原因还是uniapp未能解决创建新实例销毁旧的实例,以及代码中的destroy()方法并不能真正的销毁实例。

希望官方能尽快解决,背景音频也有同样的问题

2022-07-10 10:32 负责人:无 分享
已邀请:
刘先生啊

刘先生啊 - 平平无奇一前端

一样遇到

7***@qq.com

7***@qq.com

@DCloud_UNI_YRJ 确实是插件问题吗,还是说有没有什么使用的正确姿势 ,困扰好几天啦 恳请大佬指点

刘先生啊

刘先生啊 - 平平无奇一前端

<script>
let innerAudioContext = uni.createInnerAudioContext();
</script>

playaudiosuccess_() {
innerAudioContext.src = '../../static/y835.mp3';
innerAudioContext.play();
innerAudioContext.onEnded(function(res) {
innerAudioContext.destroy() //先销毁音频
innerAudioContext = null // 再赋值为null
innerAudioContext = uni.createInnerAudioContext() // 最后再创建一个新的
})
},
可以试试这样

  • 7***@qq.com

    多谢多谢 我去试试

    2023-02-27 00:33

7***@qq.com

7***@qq.com

@刘先生啊 感谢哈 我去试试哈

7***@qq.com

7***@qq.com (作者)

解决方法:定义一个全局的音频实例const innerAudioContext = uni.createInnerAudioContext();然后多次调用同一实例。

  • 正能量10086

    多个音频切换播放还是会卡死

    2023-07-14 10:26

1***@qq.com

1***@qq.com

我是这样写的,来回切换音频扫了几百次都没事,
Vue.prototype.$audioManager = {
audioContext: null, // 当前正在播放的音频上下文
createAudioContext() {
if (this.audioContext) {
this.audioContext.destroy();
}
this.audioContext = uni.createInnerAudioContext();
return this.audioContext;
},
destroyAudioContext() {
if (this.audioContext) {
this.audioContext.destroy();
this.audioContext = null;
}
}
};
export default {
...
methods: {
...
//播放扫码成功音效
ringling() {
const audioContext = this.$audioManager.createAudioContext();
audioContext.stop();
audioContext.src = '../../static/success.mp3';
audioContext.play();
audioContext.onEnded(() => {
this.$audioManager.destroyAudioContext();
});
},
//播放扫码失败音效
ringling2() {
const audioContext = this.$audioManager.createAudioContext();
audioContext.stop();
audioContext.src = '../../static/failed.mp3';
audioContext.play();
audioContext.onEnded(() => {
this.$audioManager.destroyAudioContext();
});
},
}
}

1***@qq.com

1***@qq.com - 河南信阳光山

我已解决 有需要的联系

要回复问题请先登录注册