首页 > 系统相关 >LVGL(二)切换页面,同时清理内存,异常总结之动画删除

LVGL(二)切换页面,同时清理内存,异常总结之动画删除

时间:2024-06-06 19:32:10浏览次数:17  
标签:动画 anim user lv set 内存 PropertyAnimation LVGL 页面

项目场景:

LVGL切换页面时,出现异常问题的总结。

这里假设有2个页面,一个页面是启动页面,一个是密码盘页面。都有几十个部件,包含样式,动画,事件等。使用squareline生成代码。

两个页面中都有一个按钮可以互相切换到另外一个页面 。作者已经运行测试过了,切换页面,同时清除内存,再也没有出现内存问题而重启复位或者卡死。

问题描述

来回切换页面,会出现异常并重启,怎么解决呢。上一篇提到切换页面时提前手动删除动画
 

下面贴出改动前的代码

  按键控件动画函数:

void SecBtnFlash_Animation(lv_obj_t * TargetObject, int delay)
{
    ui_anim_user_data_t * PropertyAnimation_0_user_data = lv_mem_alloc(sizeof(ui_anim_user_data_t));
    PropertyAnimation_0_user_data->target = TargetObject;
    PropertyAnimation_0_user_data->val = -1;
    lv_anim_t PropertyAnimation_0;
    lv_anim_init(&PropertyAnimation_0);
    lv_anim_set_time(&PropertyAnimation_0, 100);
    lv_anim_set_user_data(&PropertyAnimation_0, PropertyAnimation_0_user_data);
    lv_anim_set_custom_exec_cb(&PropertyAnimation_0, _ui_anim_callback_set_opacity);
    lv_anim_set_values(&PropertyAnimation_0, 0, 255);
    lv_anim_set_path_cb(&PropertyAnimation_0, lv_anim_path_linear);
    lv_anim_set_delay(&PropertyAnimation_0, delay + 0);
    lv_anim_set_deleted_cb(&PropertyAnimation_0, _ui_anim_callback_free_user_data);
    lv_anim_set_playback_time(&PropertyAnimation_0, 1200);
    lv_anim_set_playback_delay(&PropertyAnimation_0, 0);
    lv_anim_set_repeat_count(&PropertyAnimation_0, 0);
    lv_anim_set_repeat_delay(&PropertyAnimation_0, 0);
    lv_anim_set_early_apply(&PropertyAnimation_0, false);
    lv_anim_start(&PropertyAnimation_0);
 
}

切换页面函数:

 //Delete current screen和Free memory of current screen before loading new screen 
 
void _ui_

标签:动画,anim,user,lv,set,内存,PropertyAnimation,LVGL,页面
From: https://blog.csdn.net/bababa5652/article/details/139507586

相关文章

  • Unity Memory Profiler 内存分析
    参考:UnityMemoryProfiler从入门到精通-CSDN博客 UnityMemoryProfiler是一个用于分析和调试Unity游戏或应用程序内存使用情况的工具。它帮助开发者了解应用程序的内存分配和使用情况,从而识别和解决潜在的内存问题,如内存泄漏、过度的内存分配和不必要的内存消耗。Unity......
  • 内存优化:Boxing
    dotMemory如今,许多开发人员都熟悉性能分析的工作流程:在分析器下运行应用程序,测量方法的执行时间,识别占用时间较多的方法,并致力于优化它们。然而,这种情况并没有涵盖到一个重要的性能指标:应用程序多次GC所分配的时间。当然,你可以评估GC所需的总时间,但是它从哪里来,如何减少呢?“普通......
  • 七(汇编程序设计):已知一个M行N列的矩阵A,它的元素按行的顺序存于内存中,试编写求每行元素
    代码DSEGSEGMENTARRDB15H,22H,3H,0E4H,0A5H,56H,7H,18H DB31H,12H,13H,24H,45H,26H,47H,18H DB12H,25H,33H,34H,45H,66H,47H,81H DB10H,21H,63H,54H,56H,0C6H,0A7H,38HMDB4N DB8RowSumdw4DUP(0)ColSumdw8DUP(0)DSEGENDSCSEGS......
  • 微星主板首秀CAMM2、Mini_CUDIMM两大革命性内存!下代普及四大徒手DIY设计
    日前,微星全球第一家宣布了配置CAMM2内存的主板,而在台北电脑展上,我们终于见识到了它,暂定名“Z790PROJECTZEROPLUSCAMM2”。CAMM2已经在2023年底正式成为内存行业标准形态,从传统DIMM的立式变成了“躺卧式”,高度空间占用大大压缩,容量可以做得更大目前已经达256GB,而且单条就能组......
  • JVM学习-内存泄漏
    内存泄漏的理解和分类可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一上对象是否还被引用,对于这种情况下,由于代码的实现不同就会出现很多内存泄漏问题(让JVM误以为此对象还在引用,无法回收,造成内存泄漏)内存泄漏(memoryleak)严格来说,只有对象不会再被程序......
  • C之动态内存管理(动态内存开辟与调整等)
    目录1.为什么要有动态内存分配2.malloc、calloc、realloc和freemalloc:calloc:realloc:free:3.常见的动态内存的错误3.1:对NULL指针的解引用操作3.2:对动态开辟空间的越界访问3.3:对非动态开辟的内存使用free函数释放3.4:使用free释放一块动态开辟内存的一部分3.5:对同一块......
  • Redis-3-过期时间淘汰策略与内存淘汰策略
    目录1.Redis过期时间淘汰策略1.1惰性删除1.2定期删除1.3主动扫描2.Redis内存淘汰策略2.1最大内存配置2.2LRU最近最少使用2.2.1传统LRU2.2.2Redis中的LRU2.2.3LRU的缺点2.3访问频率最低2.3.1传统LFU2.3.2Redis的LFU2.3.2.1时间衰减函数2.3.2.2热度值函数2.3.2.3总结2......
  • 渲染三维动画的免费软件有哪些?
    随着三维动画在影视、游戏、建筑和广告等行业中的重要性日益增加,渲染软件的作用也变得越来越关键。各种高性能的渲染软件不断涌现,其中一些不仅功能强大,而且免费提供,大大降低了创作者的成本,为初学者和小型工作室带来了福音。这些工具不仅具备卓越的渲染能力,还配有丰富的教程和社区......
  • 【Unity美术】spine软件的使用—2D动画的制作
    ......
  • 关于ucosii操作系统原理------(三)内存管理
    目录一、引言二、内存控制块三、内存管理的实现源码1.动态内存分区创建函数2.获得一个内存块函数3.释放内存块函数一、引言   接下来说一下实时操作系统的动态内存管理。对于实时操作系统来说,动态内存分配的执行时间必须是可确定的。ucosii对malloc()函数和fre......