收藏
回答

wx.onAccelerometerChange 加速度计问题

问题模块
API和组件

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

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


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


最后一次编辑于  2017-12-19
回答关注问题邀请回答
收藏

7 个回答

  • 合法公民
    合法公民
    2018-03-02

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

    只有当shake为false时继续,

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

    2018-03-02
    赞同
    回复
  • 黄向阳(Hofy)
    黄向阳(Hofy)
    2018-03-01

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

    2018-03-01
    赞同
    回复
  • 左明James
    左明James
    2018-02-12
    if (isFirst) {
        isFirst = false
        wx.onAccelerometerChange(onChange)
    }
    else {
        wx.startAccelerometer()
    }

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

    2018-02-12
    赞同
    回复
  • 洪小工RAY
    洪小工RAY
    2018-01-03

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

    2018-01-03
    赞同
    回复
  • 合法公民
    合法公民
    2017-12-21

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

    2017-12-21
    赞同
    回复
  • 哇噻
    哇噻
    2017-12-21

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

    2017-12-21
    赞同
    回复
  • 合法公民
    合法公民
    2017-12-19

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

    2017-12-19
    赞同
    回复