关于监听加速度API及事件监听问题
发布于 5 年前 作者 ming23 9240 次浏览 来自 问答

使用以下3个加速度API接口:

wx.onAccelerometerChangewx.startAccelerometerwx.stopAccelerometer

页面中通过onAccelerometerChange来判断摇一摇逻辑,在页面onHide后调用stopAccelerometer停止事件监听,但事件监听并未销毁。


当再次进入小程序时,调用startAccelerometer,发现监听事件会再增加,每次小程序从后台到前台时都会增加监听,相当浪费效率。


在社区搜了解决方法,还没有解决,这个问题是否已经有解决方法了,谢谢。


// 控制器
Page({
 
  isShow: false,
 
  onHide: function () {
    this.isShow = false;
    wx.stopAccelerometer();
  },
 
  onShow: function () {
    var thiz = this;
    console.log(thiz.isShow);
    if (thiz.isShow) {
      wx.startAccelerometer();
    } else {
    this.isShow = true;
 
     
    wx.onAccelerometerChange(function (e) {
 
        var num = 0.5;
        if (e.x > num && e.y > num || e.y > num && e.z > num || e.x > num && e.z > num) {
 
          // 震动
          wx.vibrateLong({
            success: function (res) {
              thiz.huoquGuo();
            }
          })
        }
       
 
    })
 
    }
  }
 
});

4 回复

可以贴一下代码吗,遇到这个问题了

可以贴一下解决方法的代码吗?

问题已解决,onAccelerometerChange调用多少次就会开启多少事件监听,在app里onLaunch调用onAccelerometerChange,在方法内调用page的方法,然后在page的onShow、onHide里分别调用startAccelerometer、

stopAccelerometer。

stopAccelerometer只是暂时停止事件监听,调用startAccelerometer后会全部开启之前停止的事件监听

回到顶部