wx.onAccelerometerChange 加速度计问题
发布于 5 年前 作者 qiang76 9705 次浏览 来自 问答

加速度计API中的wx.stopAccelerometer() 只是停止监听加速度数据,并没有销毁监听事件,

当退出当前页,再次进入页面时(没有什么判断是否有加速度计监听事件是否存在的方法,或者我不知道吧),页面会再次注册一个监听事件,加上之前的就有两次,那么悲剧了,多次就如就会有很多次的监听事件,晃一下手机就向后台请求多次数据。

这个问题有人遇到吗?怎么解决?

7 回复

确实是个坑,在这花了很多冤枉的时间,主要是一开始不知道这个,debug了很久、很久。

if (isFirst) {
    isFirst = false
    wx.onAccelerometerChange(onChange)
}
else {
    wx.startAccelerometer()
}

可算解决了,调了6个小时

事件触发的时候判断shake是否为true,如果是true,return false,不是设置shake为true

谁能告诉一下这个问题具体怎么解决的,和楼主的问题一模一样,退出页面再进入会注册多个监听事件,stop的话会停止所有的监听,start的话会开启所有的监听。

我也遇到了 请问你是怎么解决的

首先设置一个变量,比如说时shake,为false,事件触发之后设为true,如果为true,return false。

只有当shake为false时继续,

事件处理完成时shake重新设为false

目前的解决方法时在后续执行的函数中设置变量做判断,如果不符合就return false,但是还是希望有一个真的时销毁监听事件的方法。

回到顶部