App.vue
onLaunch(){
uni.setStorageSync("__playerPageId",0)
}
pagesMedia/voice/index.vue
const backgroundAudioManager = uni.getBackgroundAudioManager();
data : {
// 这是音乐播放列表,不同点击列表会不一样,要修改为不同的,能更直观复现bug
musicList : [
'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3?id=1',
'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3?id=2',
'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3?id=3'
],
currentPlay : 0 ,
pageId : 0 ,
},
onLoad(){
var playerPageId = uni.getStorageSync("__playerPageId");
var pageId = playerPageId + 1;
uni.setStorageSync("__playerPageId", playerPageId + 1)
this.pageId = pageId;
this.playerInit();
this.play();
},
methods: {
playerInit(){
backgroundAudioManager.title = "播放器";
backgroundAudioManager.singer = '暂无';
backgroundAudioManager.coverImgUrl =
'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/7fbf26a0-4f4a-11eb-b680-7980c8a877b8.png';
backgroundAudioManager.onEnded(() => {
var __playerPageId = uni.getStorageSync("__playerPageId")
console.log("页面"+this.pageId + "onEnded,当前页面"+__playerPageId)
this.nextPlay();
})
},
nextPlay(){
this.currentPlay = this.currentPlay == this.musicList.length -1 ? 0 : this.currentPlay + 1 ;
backgroundAudioManager.src = this.musicList[this.currentPlay];
}
}
- 发布:2021-12-31 17:29
- 更新:2023-05-10 17:49
- 阅读:1044
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 11.5.2
HBuilderX类型: 正式
HBuilderX版本号: 3.3.5
手机系统: Android
手机系统版本号: Android 10
手机厂商: 华为
手机机型: nova8
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
重复返回并重新进入该页面,就会出现onEnded重复调用
重复返回并重新进入该页面,就会出现onEnded重复调用
预期结果:
onEnded应该是只执行最后一次的
onEnded应该是只执行最后一次的
实际结果:
当进入的次数足够多,由于onEnded重复调用,导致播放音乐会错乱,之前页面的音乐还会播放,而且无法直接停止,假如开了10个页面,要执行10次停止,才能关闭全部音乐
会在几乎同一时间,打印,也就是之前页面数据还是会打印,既onEnded在页面关闭/切换页面后,依然存在,在安卓端出现,小程序,ios正常。
17:04:33.529 页面1onEnded,当前页面5 at pagesMedia/voice/index.vue:476
17:04:33.564 页面2onEnded,当前页面5 at pagesMedia/voice/index.vue:476
17:04:33.582 页面3onEnded,当前页面5 at pagesMedia/voice/index.vue:476
17:04:33.599 页面4onEnded,当前页面5 at pagesMedia/voice/index.vue:476
17:04:33.624 页面5onEnded,当前页面5 at pagesMedia/voice/index.vue:476
当进入的次数足够多,由于onEnded重复调用,导致播放音乐会错乱,之前页面的音乐还会播放,而且无法直接停止,假如开了10个页面,要执行10次停止,才能关闭全部音乐
会在几乎同一时间,打印,也就是之前页面数据还是会打印,既onEnded在页面关闭/切换页面后,依然存在,在安卓端出现,小程序,ios正常。
17:04:33.529 页面1onEnded,当前页面5 at pagesMedia/voice/index.vue:476
17:04:33.564 页面2onEnded,当前页面5 at pagesMedia/voice/index.vue:476
17:04:33.582 页面3onEnded,当前页面5 at pagesMedia/voice/index.vue:476
17:04:33.599 页面4onEnded,当前页面5 at pagesMedia/voice/index.vue:476
17:04:33.624 页面5onEnded,当前页面5 at pagesMedia/voice/index.vue:476
1***@qq.com (作者)
完整了
2022-01-01 21:42