I have three issues with my Watch Face, all related to power consumption. The Watch Face I programmed consumes way too much power: I think its battery is drained in two to three days.
1/ The watch rarely goes in low power mode.
I programmed a counter. When the watch face launches, it initially has a good % of low power time (like 60 to 80%) and I witness the watch being on low power mode. Over time, this percentage decreases to about 5% and I witness the watch being in normal power mode (as opposed to low power mode) most of the time.
2/ Low power mode onEnterSleep() function never runs.
//! The user has just looked at their watch. Timers and animations may be started here.
function onExitSleep() {
awake = true;
}
//! Terminate any active timers and prepare for slow updates.
function onEnterSleep() {
awake = false;
Ui.requestUpdate();
}
The rest of the program is designed to remove the second hand display (else it would be stuck at some random position) when awake is false.
I assume the onEnterSleep function will run once when low power mode becomes active.
On my watch, this function never triggers. I've made some tests, the onEnterSleep() function is just never triggered, and instead I have a second hand that is stuck where it was last updated.
This did not happen on the simulator. Simulator worked well, with second hand being removed when entering low power mode.
3/ Redraw all vs. selective
When programming the Watch face, one can (1) redraw everything each second (clear screen, then draw all), or (2) just redraw incrementally (if the step number changed, erase the just existing step number and redraw it).
On my watch, the execution time for (1) is 250ms, for (2) it's 60ms.
To me, that explains why the battery is drained so fast.
I tried to do incremental redraws. It works.
But once you have a notification and return from it, the screen should be refreshed but it's not, and so you have a weird superimposition of the previous notification with the newly selectively updated data. Not acceptable for a watch face.
Also, when coming back from widgets, the screen is simply white and not refreshed.
Same happens when exploring the settings menu if I recall correctly.
When returning from choosing an activity (Swim, Run, etc..) however, the screen is refreshed (presumably because the watch face is relaunched).
The problem is that there is no trigger when the watch comes back from notification or widget or menu, so I can't ask the screen to refresh/redraw everything.
Question/
Do you have experience with this? Same issue or just me? Any idea to solve these issues?
Thanks.