LVGL的定时器执行定时回调时,主线程实际是停止的。
同时有多个定时器到期,它们会按照创建顺序或优先级依次执行。
定时器里面操作控件,但是控件已经被删除了。所以要删除定时器。
/*
* 屏幕销毁时清理定时器
* 避免 timer 继续更新已删除的 label
*/
static void on_master_del(lv_event_t *e)
{
if (time_timer) {
lv_timer_del(time_timer);
time_timer = NULL;
}
}
//添加时间回调,当screen发生了LV_EVENT_DELETE删除事件,执行on_master_del回调
lv_obj_add_event_cb(screen, on_master_del, LV_EVENT_DELETE, NULL);