收藏
回答

kbone-vue中多次创建canvas节点导致微信崩溃是kbone的问题还是vue的问题?

需求要详情页有多个canvas来向用户展示内容,并且每个详情页有tab可以切换canvas来展示不同的内容,一开始使用的是v-if来切换canvas节点,但是在多次切换之后,偶尔会出现小程序内存不足小程序闪退的情况,但是更多的是直接微信崩溃了。后来采用js新建节点和清空来切换展示canvas,依然崩溃,且canvas的绘制出现来奇奇怪怪的问题,坐标缓存,scale重复,画布重复绘制等问题层出不穷。再后来,用v-show,索性一次性全梭了,这样确实解决单个详情页多次创建canvas节点的问题,但是用户是不会只在一个详情页的,在切换多个详情页之后问题又来了,每次切换详情页都会梭哈一次canvas(实际上每个详情页都有至少10个canvas节点),经不住几次切换微信就又双叒叕崩溃了。多次实践后严重怀疑canvas在当前框架中进行了缓存(包括之前的坐标缓存,scale重复,画布重绘等问题可能也与此挂钩),且没有对其进行销毁,究竟是何原因呢,希望能有所解答。

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

1 个回答

  • 微信小店技术专员-binnie
    微信小店技术专员-binnie
    2020-07-02

    用v-show来控制呢?

    2020-07-02
    有用 1
    回复 11
    • Emiya
      Emiya
      2020-07-06
      后面我们采用的方案确实是v-show,但是因为是一个路由页面多次复用,所以需要用v-show对路由跳转对逻辑重新改写,这对开发对效率影响极大,这个问题还是希望官方能改善下,毕竟v-show这种处理,在打开多个小程序后内存不够的情况下依然会微信crash
      2020-07-06
      回复
    • 微信小店技术专员-binnie
      微信小店技术专员-binnie
      2020-07-08回复Emiya
      这里的canvas是用的什么canvas呢
      2020-07-08
      回复
    • Emiya
      Emiya
      2020-07-08回复微信小店技术专员-binnie
      原生canvas
      2020-07-08
      回复
    • 微信小店技术专员-binnie
      微信小店技术专员-binnie
      2020-07-08回复Emiya
      这里是安卓还是ios会有这种情况呢
      2020-07-08
      回复
    • Emiya
      Emiya
      2020-07-08回复微信小店技术专员-binnie
      都有,低端机尤为明显,部分ios(目前已知iphone11promax/ios11;iphone6p/ios13)在新建重复canvas节点渲染时会出现诡异的现象,另外这个版本的canvas会缓存translate后的坐标点、scale后的属性值、以及重绘导致重复绘制(即加深颜色等问题),更新canvas的宽高值不能清空画布等等问题,这些问题不分机型,都存在
      2020-07-08
      回复
    查看更多(6)
登录 后发表内容
问题标签