How can I disable the launcher icon splash screen from my widget?

How can I disable the launcher icon splash screen from my widget?
I don't think I have coded it anywhere to specifically display, but when the widget starts on the watch, it shows the launcher icon for about a couple of seconds (unlike the widgets that come with the watch). It's annoying.

Any ideas?

Thank you.
  • BTW, the only CIQ widget I have on my 935 which loads extra slow is a battery gauge app which runs in the background.

    Not only does it take about 4 seconds to load, but if you try to scroll past it (e.g. mash UP/DOWN repeatedly), the UI freezes and doesn’t respond to your button presses until a few seconds later (i.e instead of being immediately taken to the next/previous widget(s), you’re treated to the app splash screen for a few seconds.)

    This sounds similar to what you observed, except that instead of seeing the widget’s splash screen while the watch is frozen, you’re seeing the previous screen. I noticed the hydration widget you linked also runs in the background. Maybe the difference could be chalked up to implementation details, who knows.

    If you’re really curious, you could try other widgets which have background processing. (Unfortunately the battery gauge I linked doesn’t support Vivoactive 4S.)

  • I guess we’ll never know (unless a CIQ team member has posted about this before), but I would be super curious to know the history and implementation details of the splash screens.

    Actually...

    [https://forums.garmin.com/developer/connect-iq/f/discussion/1588/iq-splash-screen-is-it-really-necessary/9994#9994]

    The 'IQ' loading icon does serve a a couple of purposes--it indicates that the app is loading, and gives you a moment to move on to the next widget before the current widget loads. Otherwise, when you swipe to a widget you would have to wait for it to load before moving to the next.

    If apps loaded instantaneously, this wouldn't be an issue because you'd be able to flip through the widgets as fast as you like without any problems. Unfortunately, apps take a few moments to load. Just keep in mind that these devices are very low-power devices with limited memory and processing power, so we have to build in some mechanisms to keep the device responsive. The trade off, in this case, is that you get to see a little icon for a couple of seconds before you can use your app. :)

    The fenix 3 does a little better than the vivoactive and displays the name of the widget being loaded on the screen with the loading icon. I think it would make a lot of sense if we allowed developers to provide a loading icon instead of the 'IQ' icon for a little better user experience. I'll submit a request for this feature and see what happens.

    This suggests that you really *don't* want to suppress the splash screen, *especially* for widgets which take a long time to load. (It seems that once a widget starts loading, it's not possible to cancel loading by pressing UP or DOWN, which is demonstrated by two experiences in this thread with a frozen UI for widgets that load slowly.)

    It also explains why there's a minimum time for the splash screen to be displayed.

    (Yeah, in a perfect world there would be no splash screen, which is what was accomplished with glances.)

  • Yeah, I think the delay is meant to postpone the freeze, the unresponsiveness, that happens while the widget is loading.  During the splashscreen and delay, the device is not loading anything into the VM, it's doing nothing. This means it can offer a snappy response when you swipe up or down. But immediately after the delay, it loads the widget, and during that loading period, the device feels laggy and unresponsive to swipes.

    This enables the common case where you want to swipe to widget number 3 in your rotation, and that requires swiping past 2 CIQ widgets.  Those two widgets never waste resources loading because you swipe during the 1 second delay.


    Backgrounding is a good guess, maybe widgets with a background component or an `onBackgroundData` load differently.

  • Yeah, I think the delay is meant to postpone the freeze, the unresponsiveness, that happens while the widget is loading.  During the splashscreen and delay, the device is not loading anything into the VM, it's doing nothing. This means it can offer a snappy response when you swipe up or down. But immediately after the delay, it loads the widget, and during that loading period, the device feels laggy and unresponsive to swipes.

    Yeah that’s what I got from the comment from a CIQ team member that I quoted. 

    So you really wouldn’t want to eliminate the splash screen (and delay), unless you could be sure that every CIQ widget could load more or less instantaneously (maybe 200 ms at most, although still might be pushing it.)

    So I was wrong that that purpose of the splash screen was to mask the loading delay, but the actual purpose (to postpone the loading delay) seems to be a lot more important to the UX. Yeah, the original complaint in the OP was that users don’t like waiting for the widget to load. But I think users would be more upset in general if CIQ widgets would tend to freeze up their watch as the user scrolls past them.

    As a matter of fact, I’ve seen issues where scrolling past certain native glances would slow a watch down, and it’s pretty annoying.

    So I still think the original discussion kinda missed the point where the splash screen (and delay) aren’t just arbitrarily enforced to annoy users and devs, but they actually have an important purpose. Like there’s a reason Garmin put them there, and for the same reason, Garmin never would have removed them just because ppl complained.