New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Images inside recyclerview flash when notifyDataSetChanged() is called #280
Comments
Thanks for the report + sample project. I just added a fix here: #283. |
0.12.0 contains a regression and the bug popped up again The demo project to reproduce the issue is still valid, you can download and use it, with version 0.11.0 everything works fine |
This is likely intended behaviour in
Both Glide and Picasso also check the memory cache off of the main thread. |
Hey Colin - I understand your reasoning above for checking the cache asynchronously, but I noticed that Picasso doesn't have this issue despite also checking the memory cache off the main thread. I'm not sure I understand why checking the memory cache asynchronously necessitates clearing & reloading the image as it appears to be doing now. Perhaps you could wait to clear the image until the memory cache check completes? It would be awesome if you have an idea for another solution here, otherwise I think this will lead to a slightly degraded UX for situations like the one described above. Thanks for the awesome library! |
@mattlogan I agree this behaviour isn't best for UX in certain cases. Also after reviewing Picasso's code, it looks like they do check the memory cache on the main thread. They're also able to avoid waiting for the request's size as their Coil clears the drawable in Unfortunately there are two competing use cases with Interceptor support and maximizing UI thread performance on one hand and synchronous memory cache checks on the other. That said, I think it's worthwhile (and possible) to support both use cases with a boolean flag when constructing your image loader - something like |
I'm migrating my code from Picasso to Coil and discovered a strange behaviour non present with Picasso.
A recycler view contains images but when I call
notifyDataSetChanged()
on the adapter some images flash as shown in attached GIFI created a project useful to reproduce the bug, CoilFlashing
Version
Coil 0.9.4
Android 9 and 10 under Android emulator, Xiaomi MiA1, Pixel 3XL
The text was updated successfully, but these errors were encountered: