Now that we can access several data points straight from a device's native complication by using the getComplication().value method, I was curious if there were any trade offs between using the Complications class versus other Classes like the ActivityMonitor or SensorHistory to get similar data points. The main things I'd be curious about would be memory usage and battery life (assuming everything was coded appropriately).
For example, on my FR965, I can fetch my current heart rate from Activity.getActivityInfo().currentHeartRate, but now, if I'm not mistaken, I can also subscribe to the complication of type COMPLICATION_TYPE_HEART_RATE and access its value from there.
Likewise, for number of steps since midnight of current day, I could use ActivityMonitor.getInfo().steps versus complication of type COMPLICATION_TYPE_STEPS.
I did a test on my FR965 for stress, and I used the SensorHistory.getStressHistory() method versus the COMPLICATION_TYPE_STRESS complication, and the complication value was updating much more frequently than the SensorHistory method. The complication value was updating as it would on a native watch face, which I guess is the whole point... but could I be doing something wrong with the SensorHistory data, or is that lag to be expected? Stress is one of those values I'd want to have as close to real-time as possible.. or at least be able to grab the current value when I flick my wrist and look at the watch.
So would I run into any major issues with my watch's battery life or performance if I just subscribed to like 5-6 complications and displayed that data on my WF, instead of grabbing them from other classes? I'm a sucker for consistency and reusing code, and this just feels like it's set-up pretty well for it... but I'd rather not sacrifice my battery life too much in the process. Would that question be dependent on the specific complications I'd want to use?
On a semi-related note, does anyone know if we'll be able to access the "training readiness score" as a complication any time soon? I really like having that value displayed on my native watch face, and I don't see it available anywhere on the API. Would be cool to use it as an arc or bar somewhere on a custom watch face.