Ticket Created
over 3 years ago

CIQSTORE-2960

new settings are not visible after downloading new version for couple of days

Why the settings are not visible after updating the application?

Even changes to the labels are not updated immediately - I had to wait 2 days to new settings.

Settings are handled online (device's settings is available from 3.2.0 cost code/memory).

- new app + new settings

- upload to store

- accepting new vesrion for downloading  - FROM THIS MOMENT NEW SETTINGS SHOULD BE READY

- users can download new app

- for couple of days users cant' use new settings or they see old labels...

It means users have to use default values hardcoded (if developer doesn't forget to handle it and it's additional waste of time/memory because default values should be always returned as defined in properties.xml but they don't or rather they are after couple of days).

  • "- API is one and applications on watch many - so  each takes memory

    - loading bigger app consumes more energy"

    Garmin implemented symbols/has and exclude annotations.

    We can agree that it's insufficient for maximum memory savings, but I can understand why they didn't want to include line-by-line conditional compilation with #ifdef. There are a lot of things in Monkey C that waste memory, besides the lack of a built-in preprocessor.

    Given that we can use a preprocessor on our own (or write the same code over and over again, with exclude annotations), I would prefer that they revisit some design decisions, like the app settings strings fiasco.

  • Most current software environment doesn't has limit 92kb. Disappointed

    The simplest app showing nothing takes megabytes so they don't have to think about each bytes...

    Garmin should care because

    - API is one and applications on watch many - so  each takes memory

    - loading bigger app consumes more energy

  • "#define is important because makes code clear and save memory"

    My point was:

    - Most modern languages do not have a C-style preprocessor

    - C# only has a very limited preprocessor (no macros, just simple conditional compilation)

    - It's pretty obvious that languages have moved away from the concept of a preprocessor (and especially macro) because it can make it much harder to understand and reason about the code

    - You can easily use the C/C++ preprocessor in your own project; the downside is you have to create your own script / build system

    "save memory"

    Obviously Garmin doesn't care too much about devs saving memory, otherwise they wouldn't put application setting strings in the same resource pool as resources that the app actually needs at runtime.

  • #define is important because makes code clear and save memory

  • "---So every time new members are added...

    It, isn't true because as I mentioned there was no metersDescended (from 2.1) on fr55 and it has COQ >2.4 the same is florclimbed for venuSQ just because i they have not barometer..."

    I'm saying that's would happen if they used your suggestion of always adding new members to all devices.

    That's my way of saying that's one reason they wouldn't do it that way.

    "now, I've optimised code and don't need preprocessor but still have ~400 enums = ~3,2kB to remove but thanks you to give me idea to write a script in php.... It's pity, in this very memory limited environment, monkey C doesn't have such simple and very useful functionality (how it possible, that we get very complicated to develop type checking and not simple - grep/find/search on text file?)."

    Most (all?) modern languages don't have a preprocessor because it increases complexity and makes the code harder to understand (and probably makes modern IDE features harder to implement.)

    For example, C# only has very limited support for #ifdefs (conditional compilation) but doesn't support C-style macros.