xamarin / Xamarin.Forms

Xamarin.Forms is no longer supported. Migrate your apps to .NET MAUI.
https://aka.ms/xamarin-upgrade
Other
5.62k stars 1.87k forks source link

[Bug] iOS CollectionView with Images flicker #14913

Closed angelru closed 8 months ago

angelru commented 3 years ago

This only happens on iOS, on Android it does not have this effect. The page does a refresh/flicker on iOS. Items receive automatic updates through a Firestore Listener (as if it were SignalR). When the app goes to OnSleepor OnResume, I also update. It also seems that he messes with the positions of the images and swaps them in the object and then returns to the originals. I really don't know if it's a problem with the Image, CollectionViewor Bindings.

I leave you a mp4 of what happens.

https://user-images.githubusercontent.com/11645585/142720630-134393dd-c6f0-4f97-920a-cda3344f88c9.mp4

It really is somewhat annoying and creates a bad user experience. Although the application works fine.

It can be related to: https://github.com/xamarin/Xamarin.Forms/issues/14302 https://github.com/xamarin/Xamarin.Forms/issues/7127 https://github.com/xamarin/Xamarin.Forms/issues/7152

I think this problem is something of high priority.

angelru commented 2 years ago

ping @jsuarezruiz

jtorvald commented 2 years ago

@angelru do you have a small reproduction sample? From a video is hard to judge what happens.

Do all items in the list get updated? If you update all items in the CollectionView, then the CollectionView builds again and probably recycles cells. Which causes a flicker of the previous image I guess.

Can you update only properties that change in your list and add/remove items that are new or old?

angelru commented 2 years ago

@jtorvald is related to this: https://github.com/xamarin/Xamarin.Forms/issues/7127

Let me see if I can prepare something, but with the above issue it should work and there is a sample.

jtorvald commented 2 years ago

@angelru no worries I will test it with that sample app first to see if I can reproduce

jtorvald commented 2 years ago

@angelru is this still an issue with Xamarin 5.0.0.2401? And is it specific to physical device or do you also manage to reproduce on the simulator?

jtorvald commented 2 years ago

@angelru I really tried to reproduce this on a physical device but it works perfectly for me with the 5.0.0.2401 version. No flickering at all. Could you please test again and see if you have to most recent version?

CoolRets commented 2 years ago

The flickering bug remained. The image changes position during rendering.

https://user-images.githubusercontent.com/83388523/167109957-da742db7-84de-4fbc-a843-105821eeec9e.mp4

angelru commented 2 years ago

ping @jtorvald

jtorvald commented 2 years ago

@angelru I don't mind to look into it (although I've very little time) but I can't reproduce it. So if you can provide me with a small reproduction project I'm happy to look into it.

CoolRets commented 2 years ago

Hello. Will this bug ever be fixed?

jtorvald commented 2 years ago

@CoolRets if you come with a good minimal reproducible example that highlights this issue I bet there is someone willing to look into it. Please try to reproduce the issue with the minimal amount of components and preferably only from the Xamarin Forms packages.

I tried to reproduce it earlier and was unable to. I'm using the CollectionView myself and it works fine. Just pinging and asking for an update doesn't help if someone already asked for more info before. Screen recordings are nice if you have a MRE but by themselves they don't provide anything useful because there can be other programming mistakes or conflicting components in your code that affect the rendering.

Everybody in this industry probably has too much work on their plate, so if you need help with a difficult to reproduce bug like this you need to put some effort.

What I think can cause this issue for you is image loading takes a lot of time and the callback with the image result comes back after the image or it's container view has been recycled. Not sure if that is still an issue with Xamarin Forms but I remember seeing that before.