Different onUpdate behavior in simulator and real device (Vivoactive4)

In simulator is DC content persistent between onUpdate calls so I can update only changes, but in real device is DC cleared and I must rewrite everything. Is it feature and rewrite only changes in onUpdate on real device is not possible, or I have somewhere error?

  • This can vary a bit based on the app type, and if the sim is different than a real device, go by how the real device handles it.

    In general, with onUpdate(), you want to redraw everything, as something on the watch could have obscured part of the screen, and trying to update part could leave things looking odd. 

    The one exception is onPartialUpdate() in watch faces, where it can update only a small part of the screen.

    In the case of data field on a real device, the DF is blank when onUpdate is called, and for device apps, there could be a notification that covers the very top part of the screen and needs to be cleared and re-written.

  • so it's not possible repaint only part of screen in onUpdate (in watch face) on real device as in simulator and in simulator is bug and I have to repaint everytime everything in onUpdate?

  • You want to redraw everything in onUpdate(), but what you can do is not re-calculate everything all the time.

  • ok, understand. So in simulator is bug.

  • I would still say this is a bug of the Vivoactive 4 and 4S. On all Garmin watches the content is persisted between the draws, you can only redraw some part of the display (and redraw everything, when onShow/onHide happens).

    I am using this trick on My Day 24 watchface and the Maze Game. It works everywhere, except the VA4. I would like to have this fixed.

  • Is there a bug report already?

  • I cannot see it on the forums, but I have reported it when the VA4 came out (WERETECH-7828)

  • Hi jha2,

    Has this issue clarified for you?

    I'm having a "similar" problem (I think): In the simulator, I animate a BG layer and draw text over it in a small foreground layer. This works fine in all supported devices in the simulator (Vivoactive 4, Venu, Fenix 6 pro, etc). This is a View that is pushed from the "main one" upon positive check of a confirmation dialog set variable.

    But when testing in Venu, the view blinks the foreground layer and goes to black. Could this be because the real device makes more calls to onUpdate than the simulator?

    In the simulator everything works as intended, the animation loops correctly in the background and the text is displayed over it.

    Maybe also related: I was having a problem where a confirmation dialog was being pushed 4 times in the real device (on update called several times), while in the simulator it was only pushed once. I solved this with a control variable, but there is a difference for sure.

    I'm developing using SDK 3.1.8.

    Can anyone help me make sense of this?