Hello, everyone,
I'd like rise question related to watch face performance.
I decided to start new thread, although I already asked if there are some kind of optimization guidelines before, but I consider that question closed due to advices provided and the observed over the course of the year fact, that data field lags are almost always related to FIT file write operations, since they occur regularly during activity recording (at least on my already obsolete ForeRunner230 comparing it with current generation Garmin devices) and are noticeable even using completely native data screen setups.
My current question is related to watch face start lag. Problem is that any ConnectIQ watch face built with the latest SDK's be it downloaded from Garmin market or built by me for my specific device (FR230), takes at least two seconds so start. This gives me very annoying and noticeable lag when scrolling through even native widgets let alone IQ widgets, that write properties thus providing additional lag. It's not experience breaking, but is unexplainable at the very least.
I do not compare this performance with native watch face, which starts instantly, but with my own watch face, which was last updated at 2016.09.23, meaning SDK 2.1.3 was used, and, almost surely, I compiled using option "Build for device with SDK version 1.2.x", which was the default setting and was there for that SDK version. This watchface loads bitmap font containing full screen (215x180) "face frame" and 4 more 27x27 sized symbols to display different states, in addition to this during any onUpdate it draws from 3 to 6 diffently colored arcs 15 pixels thick with half screen radius and several more drawText statements. So, you can see, that this one is not of the "lightest" ones, which may just draw time using native fonts. This watch face starts almost instantly, having not more than 500ms lag.
Problem is that I'm unable to reproduce this performance any more using available SDK's (i tried every SDK versions from 1.1.4 to 2.2.1 with different "Build for device" options). Starting with the watch face generated by ConnectIQ plugin by default I get from 1.5 to 3 sec start lag, while my watch face mentioned above (and I'm already afraid to update it to presumably loose such performance after rebuild) continues to provide outstanding performance.
I tried to compare manifest options (e.g. removed minSDKVersion tag, changed 'xmlns:iq="www.garmin.com/.../connectiq"' version from 3 to 1), build options, removing additional code, removing layouts, adding timestamps to log at different execution phases (with an exception of overall degraded performance due to write operations, this gave me milliseconds difference with overal value from application onStart to the end of onUpdate being less than a second) but even the simplest watch face, which just clears screen, reads clock time and draws current hour in the center of the screen takes about 2 seconds to start when either scrolling from widgets or exiting back from system or app menus. Standard Analog sample and default watch face generated by Eclipse plugins are good examples of this behavior. Thus I consider that this lag is the time required by ConnectIQ platform to initialize and start watch face. But then it's not clear why even larger by size (prg file if 24kb) application with rather "heavy" drawArc statements even able to redraw in scrolling animation meaning at least 3 times per second?
Therefore I wanted to ask if there are additional things I didn't try, considering there is an IQ watch face built by me during late September, which works differently on my specific watch.
Please, If anyone can share the knowledge or provide additional tips on how to research this situation, do not pass this thread, any help is welcome.