Just got some reports that animations no more runs...
# compose
t
Just got some reports that animations no more runs on some devices for some users (Even simple CircularProgressIndicator without any change or infiniteTransition.animateColor) after Compose 1.4 A1 or A2 (needs to get more info). Since during those non working animation everything still works the main thread is not locked. Is there anyway to debug / identify what clock is supposed to run those so I can try to repro?
i
Did they change their animation duration scale in Developer Options? Compose respects turning off animations there.
t
Was this only enabled in 1.4? It worked on previous version with 1.3 RC. But I'll ask just to be sure.
i
Infinite animations have been suspended due to the Developer Option disabling animation since the first time Compose started reading those values back in Compose 1.2.0-alpha05: https://developer.android.com/jetpack/androidx/releases/compose-animation#1.2.0-alpha05
t
Ok so it's probably not that I've shipped dozens of release with later versions. Unless there's some new "optimizer" app trending on Play Store asking users to do it 😞 I'll see if one of the user can provide a device bug report to open an issue even without repro. Thanks.
So this is actually that 😞 Samsung turn them off in one of their official Battery Saver app ... I'm trying to see if I can apply https://android-review.googlesource.com/c/platform/frameworks/support/+/1989451 globally but it does not seem so. Ping @Doris Liu Would be nice if I could force globally to 1x after detecting that the device is Samsung and it's off.
d
If Samsung disables the animations via setting duration scale to 0, all animations should be off. That's the intention of the battery saver. It'd defeat the purpose if each individual apps turn the animations back on. In this case, animation not running is the expected behavior and is probably consistent with all other apps while the duration scale is 0.
t
Well the problem is that there's no proper degraded mode. An infinite circularprogress just show a dot. Indicators that something is running is quite important from UX perspective. Same for linear it's more clear that it's a progress but since it does nothing users think the app is broken / locked. A simple solution for mandatory animations would be nice.
And just to be clear about the Samsung app, it's not something it does when reaching like 20% battery or something. The users click optimize and it's set to 0 always 100% of the time.
d
If user wants to use the app to disable all animations, it's a deliberate opt-in to an extended battery life at the expense of downgraded user experience. If you look at your app in isolation, I agree it doesn't look ideal. If you look at the animations at the system level, all of them (e.g. progress bar/indicator, ripple animation, etc) are all turned off across all apps. It would be strange if one app doesn't respect that duration scale settings.
t
Again I'm not very clear about that Samsung app, it does not say anywhere that it does disable animations at all, the users reported to me that the app was broken. Ian showed me a possible reason I had them enable the dev settings and check just in case, it was set to off and then they tried to figure out what they could have done to trigger this and that's how we figured out it was that Samsung app. After reflection the users also told me that effectively there were also some strange stuff on some other apps.
Copy code
I just realised that my Play Store showed strange animations for quite some time when updating apps. Usually you have a turning circle, but I had three not so proper moving dots lately.
So on Play Store this does something but the animations are not completely stopped either. So no the users does not want to disable animations at all, it's a side effect of some over optimisations of Samsung like all those seen at https://dontkillmyapp.com/samsung that we have to deal with on a daily purpose. Maybe the Playstore have a workaround to use less battery when set to 0 and maybe this could be offered as an official solution. I don't know, but currently users do not understand what is going on. Generating lot's of support.
d
That's frustrating. Maybe we can help escalate. Which Samsung app is it? Do you have a link? Does the battery optimizing option require an opt-in or is it on by default?
t
Seems it's “Good Guardians” app which has a component called “Battery Guardian” unfortunately I do not have a Samsung device to reproduce. All I know is that those users certified me they did not want to disable animations and did not manually changed the settings.
In the meantime @Doris Liu do you think of a design way to degrade the progress bars that would still be indicative to the users that something is occurring if you think I should not force 1x? (Ping @Chris Sinco [G] too) I have plenty of them in that app to indicate that discovery is running or sync is running and need to reduce the support it triggers.
c
If no animations can be run, then from a UX perspective, you would probably have to resort to static text, e.g. “Loading…” or a static icon that indicates progress, like a clock, to indicate progress.
t
Seems Doris says I should not override the fact that they are disabled even if Play Store still animates. I tried the static image it's weird and does not really convey the intent. I guess I'll have to degrade to the Loading... / Searching... Thanks for the answer.
c
Yes I agree with Doris, hence the graceful degradation to static loading text
t
So after https://issuetracker.google.com/issues/262298306 and https://issuetracker.google.com/issues/262298306#comment2 is there a chance to open discussion on the fact that no animation on an infinite progress bar does remove access to information and should provide a degraded mode?
155 Views