I almost gave up, but I still hope: ALWAYS ON MODE

Hi,
I definitely need help from the community to figure out a few things.
First, some initial data.
There is a watchface I created. Its key feature is graphics with anti-aliasing, I use anti-aliasing fonts, font characters are pieces of a picture, from these characters I assemble a watchface like a puzzle from pieces. This works well enough until I wanted to add ALWAYS ON mode.
I studied the technology that Garmin offers and tried to put it into practice. At first glance, the technology is simple and logical - we draw everything except the second hand in the BufferedBitmap, use the OnPartialUpdate() event, display the prepared background (the same BufferedBitmap), draw the second hand. This is where the problems begin.
1. It is impossible to create a Bufferbitmap in full screen size - there is not enough memory. You can forget about the hands up to the edge of the screen. It is impossible to reduce the memory size of the BufferedBitmap - you need to use the palette, which means you can forget about graphics anti-aliasing. Guys, I don't want to give up anti-aliasing, I like the anti-aliased picture, without it the watchface in 2020 looks like a relic of the past.
2. Power budget in the OnpartialUpdate() event. 30ms. Ok, I no longer have memory (all are occupied by BufferedBitmap), load my font for drawing the hand, 1kb of memory remains free.
We look at the "View watchface diagnostics" in the simulator - 26ms to the output of the BufferedBitmap to fill the background image? And this with a setClip() for the second hand at 12 o'clock? Wait, I haven't even started drawing the second hand yet, and I'm already left with 4ms of budget? Going further, I want to draw a second hand. No memory? Ok, use the LoadResource() to load resources for the second hand into memory. 142ms. That's it, there is no further way.

Guys, I don't understand. I want hands the size of a dial, not tiny half-radius hands just because there is no memory for more. I want smoother graphics, without using tricks known only to the most experienced programmers, because tricks are tricks, they are not for everyone. I have read, it seems, everything that was on the forum on the creation of ALWAYS ON watches, and all that I understood is that there is no information.
How to create resources correctly in order not to use LoadResource() in the OnPartialUpdate() event (after all, all available memory has already been taken up by His Majesty BufferedBitmap)? Information is zero.
What operations do it cost to calculate the power budget in order to write efficient code in the OnPartialUpdate() event? Information is zero.
How to combine graphics anti-aliasing and ALWAYS ON mode without spending hours debugging the code trying to save another 1ms? Information is zero.
Maybe this is the way it should be, information should be obtained by yourself, by endless experiments in the simulator? I cannot take this thought seriously in 2020.
I don’t want to think that creating a watch with the ALWAYS ON mode is such a quest for the elite.

I ask the community to just show me the way. The official documentation has led me to a dead end, and I see no way out to achieve the result - to make the ALWAYS ON mode work using anti-aliased graphics.

  • "Always on" has kind of a different meaning these days, as it's the term used for AMOLED and LCD watches where things are displayed when a WF is in low power mode (max of 10% of the pixels on, and no pixel on for more than 3 minutes at a time.

    What you're trying to do is commonly called "1hz" or "seconds all the time"

    The key to 1hz is to do as little as possible in onPartialUpdate.  If you need to load resources, do it someplace else, like onUpdate().  Memory available is fixed, and the bigger the palette, along with screen size, the more memory you use in a buffered bitmap. As far as memory for a buffered bitmap, something to consider is that the devices can be 218x218 up to 280x280,all with 92k for max memory 

    The more rows in the clip region, the bigger the impact on the budget.  With multiple clip regions, the rows are combined so the top row of the top clip region, to the bottom row of the bottom clip region.

    In the case of an analog WF, if you keep an eye on Watch Face Diagnostics, you'll see peaks at 12 and 6, and lows at 3 and nine - fewer rows at 3 and 9.

    You seem to have a good grasp of 1hz.  The hard part is using a design (screen layout, hand sizes, etc) that will work.  Smaller second hand, and you could get by with a smaller buffered bitmap.  Displaying the seconds digitally, another option.  You can also opt for not using 1hz and just displaying seconds when not in low power mode.