6 datafields vs 1 app: battery drain

I run 6 CIQ datafields I’ve written on my Edge 520 screen while cycling. Very useful. But my battery life is about 6.5 hrs and should be closer to 15 hours!

I am considering writing a single app that performs and displays all those items. One executable rather than six.

Should that significantly reduce CIQ imposed battery drain?

Alternatively I could write 1 full screen data field, but I believe there are size limits for a data field executable that is much more restrictive than for an app, right?

Thanks!!
  • There's less memory in data fields yes, but the advantage of data fields is that you can integrate them into the native experience. You can see the memory limits when you start the simulator via File -> View memory

    I don't think the battery burn will be less if you do everything in 1 data field, unless you can combine calculations between your data fields.
    Calculations and looping are battery killers, try to precalculate and cache things if you can
  • How do you combine calculations between data fields. And or access data from one data field/app to another?
  • CIQ apps can't share data on the devices themselves. As far as sharing logic/code, Monkey Barrels is the way to go, so the same code gets compiled in multiple apps. (basically, the same *.mc file is used in all the apps for shared functions)
  • How do you combine calculations between data fields. And or access data from one data field/app to another?


    What he meant is.... Say I have 6 data fields, and several perform the same base operations to produce interim results that several of the data fields use. Then by combining into one, I can consolidate the logic. So not that I can share the calculation between data fields, but avoid duplication.

    I actually do this... there are some "timer" functions that don't exist natively. For example, I want both moving time, regardless of the auto-pause setting. So I need to track that myself with a counter that is triggered by speed. That is used by several of my data fields. My logic loops run every second right now. I should look at only entering my loop every "nth" second, or based on some trigger. And for calculations that don't change that often, cache them and only update when needed.
  • When looking at a full screen DF vs an app, you'll have additional overhead in the device app, as you'll have to handle the recording session, sensors, a timer for things like onUpdate, etc yourself. And things like pause/resume/save/discard/addLap, maybe auto-pause and auto-laps, while recording.