在 uni-app 中,getRecorderManager 获取的录音管理器 recorderManager 是全局唯一的,因此你不能销毁它。但是,你可以移除所有的 onStop 事件监听器来避免重复回调的问题。以下是如何移除所有 onStop 事件监听器的方法:
使用 offStop 方法移除监听器:recorderManager 提供了 offStop 方法来移除 onStop 事件的监听器。你需要确保在页面卸载时调用这个方法,以避免重复绑定回调函数。// 页面卸载时
onUnload() {
// 移除所有 onStop 事件监听器
recorderManager.offStop();
} 确保使用相同的回调函数:如果你在页面加载时绑定了 onStop 事件监听器,确保在页面卸载时使用相同的回调函数来移除监听器。如果每次都定义一个新的函数,那么之前绑定的监听器不会被移除。// 页面加载时
onLoad() {
let stopCallback = (res) => {
console.log('录音结束', res);
};
recorderManager.onStop(stopCallback);
},
// 页面卸载时
onUnload() {
// 使用之前定义的相同的回调函数来移除监听器
recorderManager.offStop(stopCallback);
} 避免重复绑定:在页面加载时,检查是否已经绑定了 onStop 事件监听器,避免重复绑定。let stopCallback = null;
// 页面加载时
onLoad() {
if (!stopCallback) {
stopCallback = (res) => {
console.log('录音结束', res);
};
recorderManager.onStop(stopCallback);
}
},
// 页面卸载时
onUnload() {
if (stopCallback) {
recorderManager.offStop(stopCallback);
stopCallback = null;
}
} 通过以上方法,你可以确保在页面卸载时正确地移除 onStop 事件监听器,避免重复回调的问题。这种方法适用于所有使用 getRecorderManager 的场景,确保资源得到正确管理。
网友回复
如何破解绕开seedance2.0真人照片生成视频 限制?
python有哪些算法可以将视频中的每个帧图片去除指定区域水印合成新的视频?
iphone的激光雷达数据能否实时传输到three三维空间中?
豆包sora等ai视频生成大模型生成的视频水印如何去除?
python如何实现在电脑上拨号打电话给手机?
具身机器人与人形机器人区别?
nodejs如何将一个完整的js代码文件切割成不同的部分混淆后动态加载进入html运行?
为啥windows.onerror捕获js错误是这样的{"message":"Script error.","source":"","lineno":0,"colno":0,"stack":null,
2026年ai将全面接管编程?
WebMCP是干啥的?


