收藏
回答

关于监听加速度API及事件监听问题

问题模块 框架类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 wx.onAccelerometerChange 客户端 6.6.3 1.9.91

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


wx.onAccelerometerChange wx.startAccelerometer wx.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();
            }
          })
        }
       
 
    })
 
    }
  }
 
});



最后一次编辑于  2018-03-01
回答关注问题邀请回答
收藏

4 个回答

  • -W
    -W
    07-11

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


    07-11
    赞同
    回复
  • 吴洋
    吴洋
    2018-03-17

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

    2018-03-17
    赞同
    回复
  • Charles高艳超
    Charles高艳超
    2018-03-01

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

    stopAccelerometer。

    2018-03-01
    赞同
    回复 1
    • 仔仔
      仔仔
      2018-12-07

      你好,可以提供一下具体代码吗

      2018-12-07
      回复
  • Charles高艳超
    Charles高艳超
    2018-03-01

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

    2018-03-01
    赞同
    回复