Acknowledged
CIQQA-3217

Simulator does not apply updated property values without "Reset All App Data"

In the Connect IQ simulator (SDK 8.1.1), changes to <property> values are not reflected unless Reset All App Data is performed.

Steps to Reproduce:

  1. Define properties, for example::

    <resources>
        <properties>
            <property id="menuTitleBackgroundColor" type="number">0x212021</property>
            <property id="menuItemLeftPaddingFactor" type="float">0.03</property>
        </properties>
    </resources>
    
  2. Launch the app in the simulator and close the simulator again.

  3. Modify one of the <property> values in the XML file.

  4. Relaunch the app in the simulator (without resetting app data).

Expected Result:
The updated property values should be reflected when the app is reloaded.

Actual Result:
The simulator continues to use the old property values until Reset All App Data is performed.

Additional Notes:

  • If different values are specified for individual devices, switching between devices does not trigger a property refresh. The simulator continues using the values from the first device launched after the last reset.

  • This issue makes it difficult to test dynamic UI changes based on property updates.

SDK Version: 8.1.1

Parents
  • You could use JSON resources instead of properties for that kind of thing, assuming you don't need to support ancient CIQ 1 devices which lack support. (JSON resources were introduced in CIQ 2.3)

    Thanks for the suggestion - I wasn't aware of JSON resources. That said, I prefer the approach using separate source code directories. This way, I can take full advantage of all available types, such as FontDefinition or ColorType, when defining properties. It also allows the compiler to enforce correctness, whereas JSON resources may require additional effort to ensure everything is properly defined.

    I've defined a DefaultConstants class that provides default values for all constants. Building on that, I created a Constants class that serves as the main access point for these values. There are multiple source directories, each containing its own implementation of Constants. The base implementation is essentially empty - it inherits all defaults from DefaultConstants and is used for most devices. For specific devices, I have separate source directories with Constants implementations that override certain values as needed.

Comment
  • You could use JSON resources instead of properties for that kind of thing, assuming you don't need to support ancient CIQ 1 devices which lack support. (JSON resources were introduced in CIQ 2.3)

    Thanks for the suggestion - I wasn't aware of JSON resources. That said, I prefer the approach using separate source code directories. This way, I can take full advantage of all available types, such as FontDefinition or ColorType, when defining properties. It also allows the compiler to enforce correctness, whereas JSON resources may require additional effort to ensure everything is properly defined.

    I've defined a DefaultConstants class that provides default values for all constants. Building on that, I created a Constants class that serves as the main access point for these values. There are multiple source directories, each containing its own implementation of Constants. The base implementation is essentially empty - it inherits all defaults from DefaultConstants and is used for most devices. For specific devices, I have separate source directories with Constants implementations that override certain values as needed.

Children
No Data