IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序Canvas卡顿优化解决方法 -> 正文阅读

[移动开发]微信小程序Canvas卡顿优化解决方法


一、引入

原安卓图书馆选座项目CSDN博客链接:
Android图书馆选座系统课程设计
在这里插入图片描述
最近在搞微信小程序,想把以前写的安卓图书馆选座项目的编辑地图移到小程序上去,但是发现小程序的canvas性能优化极差,导致编辑地图卡顿,如下:
请添加图片描述
可以明显的感觉,绘画黄色的线框很卡。

二、分析问题

我网上搜索相关解决方法,发现没有比较简单的可行方法,于是自己琢磨好久。
发现如果打开小程序开始界面是如上编辑地图的界面,绘制黄色框并不会很卡顿,而如果像我这个小程序本身要求要从显示当前地图界面,再跳转到编辑地图界面,绘制黄色框就会卡顿,流程如下:
请添加图片描述

  1. 问题所在
    因为显示地图界面存在一个canvas、而编辑地图又存在一个canvas,小程序运行两个canvas会导致性能下降
  2. 尝试解决
    既然是有两个canvas导致界面卡顿,那么我想在显示地图界面跳转到编辑地图界面时使用redirectTo、reLaunch两中一个,将当前显示地图界面关闭那显示地图界面的canvas自然会销毁,在我小程序跳转代码修改如下:
  nagTo: function () {
    // wx.navigateTo({
    //     url:"/pages/libraryeditmap/libraryeditmap"
    // });
    wx.redirectTo({
      url: "/pages/libraryeditmap/libraryeditmap"
    });
    // wx.reLaunch({
    //   url: "/pages/libraryeditmap/libraryeditmap"
    // });
  },

可现实啪啪打脸~,即使关闭了当前显示地图界面,canvas似乎没有销毁一样,在编辑地图界面还是卡顿。
于是此方法行不通

三、解决方法

基于以上分析,小程序在页面销毁时似乎不销毁canvas,那我想到用代码控制在页面销毁/卸载之前告诉页面要销毁canvas。

  1. 在wxml的canvas控件父节点view加上wx:if语句控制显示与否
    在这里插入图片描述
  2. 在js文件中data中设置isshowcav,canvas变量
    在这里插入图片描述
  3. 在onLoad中加载canvas控件并将其canvas设置到data中
    在这里插入图片描述
  4. 在onUnLoad方法中,将获取的canvas的高宽设为0,并且isshowcav设为false
    在这里插入图片描述
    个人猜测,这里将canvas的高宽设为0,并且设置canvas不显示后,显示地图界面卸载后会检测这canvas无用了会将其销毁。
    这样在编辑地图界面绘制canvas就不会卡顿了。

四、解决后效果图

请添加图片描述
可以看到绘制黄色框挺流畅的了

五、绘制好的地图

另外,图书馆安卓项目也成功移到小程序上了
请添加图片描述

感兴趣的朋友可以看看原项目Blog哦:
Android图书馆选座系统课程设计

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:51:06  更:2022-05-09 12:52:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 1:46:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码