Acknowledged
CIQQA-3139

onSettingsChanged() not fired for data field in simulator

In the SDK Ver 8.1.1 simulator, 

AppBase.onSettingsChanged() is not fired in a data field app when settings are changed from the settings menu (of the data field).
On an actual watch, it appears that the data field settings can only be edited when the data field is first added to an activity data screen.  When the activity is ALREADY RUNNING, the "Edit data field settings?" screen shows when the data field is selected but "Yes" cannot be selected.   The only way I can select Yes is when the activity is ALREADY RUNNING, is to remove the data field from the data screen then add it back, and when that is done I can select "Yes" and edit the settings.  
 
Is this the intended behavior?  If so, why can't settings be edited on the watch during the activity?
  • > When the activity is ALREADY RUNNING, the "Edit data field settings?" screen shows when the data field is selected but "Yes" cannot be selected. 

    > Also have a VA4 and can change the setting before starting the activity, but not during.

    Honestly this sounds like a bug, but I guess VA4 won't ever be updated again :/ (last update was over 2 years ago).

    > Do you know if on newer Venu and Vivoactive models if this is possible?

    No clue, sorry :/

  • I have a Fenix and can change the settings during the activity as you described.  Also have a VA4 and can change the setting before starting the activity, but not during.  Do you know if on newer Venu and Vivoactive models if this is possible?

  • Hey that's great!  Thank you.

  • > onDeviceSettingChanged (not exactly what you want)

    It's not what they want at all.

    It's obviously just a way to notify the app that one of the built-in device settings has changed (like 12h/24h time format or units).

    In the past, devs who wanted to respond to device settings changes in real time would have to call getDeviceSettings() constantly, and they'd have no way to know what fields changed. There were probably battery life concerns associated with this practice for many devs (I know I worried about it).

  • > AppBase.onSettingsChanged() is not fired in a data field app when settings are changed from the settings menu (of the data field).

    As flocsy said, onSettingsChanged() is meant for OG "off-device" settings (configured in Connect app or Garmin Express).

    It's not meant for on-device settings, and it isn't necessary (or really possible) for code on the device to notify your app when on-device settings are changed, as the on-device settings view is literally part of your app:

    - Why it isn't necessary: your settings view can do whatever it wants, including "notifying" the rest of the app that a change was made. (e.g. set a global variable like "settingsChanged = true" when a setting is change, and act on that in compute())

    - Why it isn't possible: your on-device app settings can take several forms, your settings view can do whatever it wants, and the device code has no idea when your settings view  changes "settings" or not. The device code doesn't know whether your settings are in app memory, storage, properties or some combination of the above. If your settings view changes something in app memory or calls an app function, device code doesn't know that, and even if it did, the device code wouldn't know if you changed a setting or not. Similarly, if you save something to storage or properties, the device code would not know whether you are saving a "setting" or not.

    > On an actual watch, it appears that the data field settings can only be edited when the data field is first added to an activity data screen. 

    What watch do you have?

    On my Forerunner 955 (5-buttons + touchscreen):

    - I only get the "Edit data field settings?" prompt when I add a data field, not when I select a data field after it was already added

    - For data fields that were already added, I can open settings as follows:

    -- hold UP for menu on any data page (does not have to same page as the data field)

    -- Select Connect IQ Fields (this is pretty far down the list for me - it's the 3rd or 5th item depending on whether the activity is started or not, and it's not visible unless I scroll)

    -- Select the CIQ data field whose setting I want to change

    This is def not intuitive and for me it's at least 5 button presses.

    > When the activity is ALREADY RUNNING, the "Edit data field settings?" screen shows when the data field is selected but "Yes" cannot be selected. 

    This def sounds like a bug