两个页面wx.getRecorderManager冲突
发布于 6 年前 作者 vwu 6745 次浏览 来自 问答

您好,我现在遇到了一个问题。

我在两个页面index和detail页面的page上边声明了两个

const recorderManager = wx.getRecorderManager();

然后在各自的onload中声明了onstop事件,现在出现了一个问题

程序启动进入首页(index页)以后,在进入detail页面,再回到首页,进行录音

此时录音结束以后的onstop执行的却是detail页面的事件,不知道该如何处理,麻烦指导下

谢谢

//index.js
//获取应用实例
const app = getApp()
const recorderManager = wx.getRecorderManager();
const innerAudioContext = wx.createInnerAudioContext();
var util = require('../../utils/util.js');
Page({
 。。。。。。。
onLoad: function (options) {
    var that = this;
    innerAudioContext.onPlay(() => {
 
    })
    recorderManager.onStart(() => {
 
    });
    recorderManager.onStop((res) => {
      console.log("首页输出")
})
})

上边是index的

const app = getApp();
const recorderManager = wx.getRecorderManager();
const innerAudioContext = wx.createInnerAudioContext();
var util = require('../../utils/util.js');
Page({
。。。。。
  onLoad: function (options) {
  recorderManager.onStop((res) => {
      console.log("detail输出")
})
}
})


4 回复

谢谢您的回复,但是这样做不行,这样 话 相当于事件注册了多次,到时候监听事件会执行多次

RecorderManager 和 BackgroundAudioManager 一样都是全局的,你这两个页面其实都是同一个对象。建议页面 onShow 时重新绑定各个事件,即使没用到的事件也绑一个空函数,覆盖掉之前页面绑定的其他事件。

我也是一样,并且我第一个页面是

const recorderManager1 = wx.getRecorderManager

第二个页面是

const recorderManager2 = wx.getRecorderManager

返回第一个页面后执行record仍然会起冲突执行第二个recorderManager2.onStart()

又要沉了?

回到顶部