Both CIQ datafields in the activity crash suddenly

I am in a walking activity with 2 CIQ DFs. All of a sudden both display the IQ icon, without anything in ERA or in the device logs.

fr965 FW 28.08. I don't expect this to be fixed ever, as Garmin seems to have abandoned both fr965 and CIQ lately, but maybe other devs will have something important to add.

  • Partially maybe, but it's not because it's null IMHO. I think this is a design decision, though I don't see any reason why it has to be that way. We know the activity type, and when we enter the "same" menu from other context, there is an activity that is still not started, so there could be one when started from the menu. All they need to prevent is the actions, so the user can't start the activity from the system menu. 

  • watch face > Menu > Activities & Apps > choose activity > Activity settings > Data screens > All the CIQ data fields display "IQ...". (Note: I don't have an "active" or "resume later" activity)

    I think this is a design decision, though I don't see any reason why it has to be that way.
    All they need to prevent is the actions, so the user can't start the activity from the system menu. 

    Maybe this is what you meant, but you *can't* start an activity from the system menu (i.e. settings > activities & apps > [activity] > [activity] settings > data screens). "All they need to [do]" seems to imply that they aren't already doing that, but maybe you meant it's all they need to do (and nothing more).

    Anyway the most likely explanation for the behaviour in this case is that there is *no activity* (started or not) and no *ActivityInfo object*, therefore it's not possible for the watch's firmware to run CIQ data fields to provide a preview in this situation. (Note that when a data field app runs, compute() runs regardless of the state of the timer: not started, running, stopped, or paused. That way CIQ data fields can display activity-related data even when the timer isn't running - just like how the native HR field displays your HR even before the activity has started, and when the timer is stopped.)

    So instead of showing a preview, the watch shows "IQ..." for any CIQ data field. I agree that it's probably not a crash, the watch is probably not running the CIQ data fields at all, so there is nothing to display.

    In other words, I think there actually is a reason it is that way. It doesn't necessarily *have* to be this way (see below), but this is the simplest solution on Garmin's end to handle the scenario where there's no activity / ActivityInfo but there is a CIQ data field on the screen.

  • This is the flip side of the normal behaviour when editing a data field normally and the short, black popover is displayed to select a new field (e.g. triggered by long-press on a data field in an activity), where even scrolling to a CIQ field in the list of fields causes the data field app to run, which can result in the annoying "use open [ant+] connection?" prompt.

    In this case (editing an activity from "settings > activities & app ..."), Garmin could've implemented things differently so that there is a dummy activity and dummy ActivityInfo in order to support the CIQ data field preview, but maybe they don't want to do that and/or maybe it's not practical.

  • In hindsight, it would've been nice if Connect IQ data fields had a designated view for previews, returned by a new function like getPreviewView. This view could be used for previews when:

    - displaying a field in pure activity settings mode, when there is no actual activity

    - displaying a field for preview when scrolling in the Connect IQ field list when editing a data field normally

    This would kill 2 UX issues with one stone, but I don't think it will ever happen. Even if it does, it won't magically fix all the existing data fields in the wild.

  • I think the dummy ActivityInfo solution would be the best one, and it would be great even for editing a field during a live activity, to avoid the stupid ANT+ prompts which appear just from scrolling in the CIQ data field list. Ironically, the native data field previews don't show real data, but they show dummy data (like 0 or --), which indicates dummy data is actually used for this purpose [*], just not for CIQ data fields.

    [*] or to be more precise, all native fields either receive dummy data for previews, or they have a mode which displays their own hardcoded dummy value / view. Either way, it's something that CIQ fields could benefit from.

  • I will also say that since "IQ..." is known to be displayed for at least *some* crashes, and that "IQ..." looks similar enough to "IQ!" (which is known to indicate a crash for sure), maybe it's not the greatest UX to use "IQ..." to mean "there's supposed to be an IQ field here, but don't worry, nothing's wrong!"

    Idk if I have a better solution though. Maybe the launcher icon and app name could be displayed, similar to the way it worked on old devices with full-screen widgets, where you'd briefly see the launcher icon and app name when you scrolled to a CIQ widget, before the app was loaded and the initial view rendered.

    Ofc this might not look so great since most devs will have used the default launcher icon, but it might be better than what we have today.

  • This wouldn't fix the ANT prompts as they happen when the darafield app opens the channel, that is usually in initialize or onStart or the latest in getInigialView

  • Yes, I think if this is not a bug but a deliberate decision then the best would be to display the icon and the name, similar to what glances do on older watches. But ANY thing would be better than using the same icon that is used to indicate crashes.

    BTW we still didn't have any explanations about the difference between IQ! and IQ... but I'd say that probably those two are also too similar (if indeed both can appear on a specific device and IQ... is not the newer version of IQ!) and would be better to have a more distinct look, so communicating with users we would have better chance to understand which one the saw. (To make my point I didn't know, let alone notice that there are 2 different icons, and I think 99% of the users who see either icons would only remember the IQ and maybe the color)

  • I think the dummy ActivityInfo solution would be the best one
    This wouldn't fix the ANT prompts as they happen when the darafield app opens the channel, that is usually in initialize or onStart or the latest in getInigialView

    Yes, that's true. Good point!

    We could refine the idea further so that when a data field preview is shown, ANT+ calls silently fail and no prompt is displayed to the user. This could actually be done separately from either approach of handling data field previews (providing dummy data or allowing data fields to provide their own view).

    Garmin won't do it because it's additional work and they don't care too much about UX.

    Actually there's 3 different approaches to handle the preview / pure settings problem:

    1) allow data fields to provide their own preview (which skips the usual application lifecycle). This would've been great if it existed from the start, but now it's probably the worst solution (in isolation).

    2) feed data fields dummy ActivityInfo

    3) don't run data fields at all for previews, but just show the app name and icon

    Now I actually think 3) is the best solution, as it truly solves the ANT+ prompt issue as well.

    And Garmin already does a form of 3) when you access activity settings from the (global) settings menu (as you described) - in this case I'm fairly sure the CIQ data fields aren't running at all (as opposed to crashing), since I don't see any ANT+ prompts even though I have fields which use ANT+ and usually trigger the prompts.

    Besides, even Garmin wouldn't want your CIQ data fields to crash for no reason (just because you accessed data page settings in a different way), and devs would've noticed excessive crashes by now, I think.

    Bonus solution:

    - Use 1) if available, but fall back to 3). This might actually be the best solution of all, but also the least likely to happen

    Ofc the most likely outcome is that absolutely nothing will change.

  • No, because it's IQ... which according to Brandon is not published to ERA (or actually there's no error file locally)

    But I also think it's not running, though could be maybe verified by logging something at the apps constructor and onStart.