7***@qq.com
7***@qq.com
  • 发布:2022-07-10 10:32
  • 更新:2025-03-14 11:36
  • 阅读:3069

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

分类:uni-app


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

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

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

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

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

一样遇到

金墨森

金墨森 - 农墨科技

@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() // 最后再创建一个新的
})
},
可以试试这样

  • 金墨森

    多谢多谢 我去试试

    2023-02-27 00:33

金墨森

金墨森 - 农墨科技

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

7***@qq.com

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

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

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 - 河南信阳光山

我已解决 有需要的联系

  • 2***@qq.com

    怎么联系

    2025-03-14 02:16

  • 1***@qq.com

    回复 2***@qq.com: hao1015l 这是我的微信号

    2025-03-14 11:35

1***@qq.com

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

我已经完美解决了 有需要联系

要回复问题请先登录注册

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容