I see that lvgl relies on a lv_task_handler, which seems to be mainly used to handle timers, and the rendering is also based on periodic detection (LV_DEF_REFR_PERIOD).
But then the system would need to be woken up frequently (e.g. 60HZ frequency). For our application, consider for example a watch that may only need to be refreshed once per second when undering the watchface screen, but the system still wakes up at 60hz and then sleep, this will waste some power.
Is it possible to achieve my requirement based on the current design?
If the main task is handled as an event queue and the refresh event can be automatically generated internally (e.g. when by calling the api to change the object property), then is it possible to eliminate the need to check the refresh periodically?
If nothing changes on the UI nothing will be rendered and the render timer will be suspended too.
You can check the return value of lv_timer_handler
to see the milliseconds to the next timer.
Note that, if you have a touchpad, its read timer will fire periodically to see if there were some user interactions. It can be also eliminated as described here: Sleep management — LVGL documentation