收藏
回答

带动画的 canvas 页面内存一直暴涨,10 分钟微信自己退出

下面是改编的官方的 小程序示例 中的 画布 -》canvas 弹小球的代码:


Page({

  onLoad: function() {

    this.context = wx.createContext();

  },

  onReady: function () {

    this.position = {

      x: 150,

      y: 150,

      vx: 2,

      vy: 2

    }

    this.drawBall()

    this.interval = setInterval(this.drawBall, 17)

  },

  drawBall: function () {

    var p = this.position

    p.x += p.vx

    p.y += p.vy

    if (p.x >= 300) {

      p.vx = -2

    }

    if (p.x <= 7) {

      p.vx = 2

    }

    if (p.y >= 300) {

      p.vy = -2

    }

    if (p.y <= 7) {

      p.vy = 2

    }


    var context = this.context;


    function ball(x, y) {

      context.beginPath(0)

      context.arc(x, y, 5, 0, Math.PI * 2)

      context.setFillStyle('#1aad19')

      context.setStrokeStyle('rgba(1,1,1,0)')

      context.fill()

      context.stroke()

    }


    ball(p.x, 150)

    ball(150, p.y)

    ball(300 - p.x, 150)

    ball(150, 300 - p.y)

    ball(p.x, p.y)

    ball(300 - p.x, 300 - p.y)

    ball(p.x, 300 - p.y)

    ball(300 - p.x, p.y)


    wx.drawCanvas({

      canvasId: 'canvas',

      actions: context.getActions()

    })

  },

  onUnload: function () {

    clearInterval(this.interval)

  }

})


在小米 MAX 上, android 6.0.1, 4G 内存

用小程序基础库所有版本上均做了测试,大概都是这种现象:


该页面 10 几分钟后, 在调试窗口性能数据中查看到,内存涨到近 700 M后微信直接退出!


麻烦 @胡浩 @梁天智|Albie @smoothieli @帮忙看看。


我们的程序与这个结构类似,马上要申请上线了,出现这样问题,很是无奈啊。。。


回答关注问题邀请回答
收藏

12 个回答

  • 易水寒
    易水寒
    2017-07-19

    我们的应用一直没有在Android手机上做过长时间运行的测试,今天拿 小米 MAX 上, android 6.0.1, 4G 内存 的手机做了测试,发现了这个严重问题。


    你只需要用该类型的手机打开 小程序示例 -> 画布 -> canvas , 在 1.4.0 的基础库上,同时打开性能数据窗口, 就可以看见内存一直增涨,到 700 m 左右,程序就退出了。

    2017-07-19
    有用
    回复
  • Albie
    Albie
    2017-07-19

    这个问题在小程序示例里面也会出现吗?提供下你们的小程序appid?还有补充一下我应该怎么用你的小程序重现问题~我这边查下具体是什么原因导致~

    2017-07-19
    有用
    回复

正在加载...

登录 后发表内容