我正在开发 Xamarin.Forms 应用程序,
在我的一个页面中,我有多个包含图像的自定义 StackLayout (ActivityTypeView)。这些 StackLayout 是在我的页面的网格内动态创建和添加的。
在我的 ActivityTypeView 中,我将图像源设置如下:
WorkIcon.Source = ImageSource.FromFile("disable.png");
(我的图像保存在我的可绘制文件夹中)
问题是,当我转到另一个页面并多次返回时,在尝试加载图像时总是会在某个时刻出现 OutOfMemory 异常。
我认为当我更改页面时,我的 ImageSource 不会被破坏/处置。因此,在我多次重新加载同一页面后,总会出现此错误。
我想知道如何处理这种情况。如何正确处置资源以及何时处置?
最佳答案
我已经习惯使用 FFImageLoadingLibrary它负责正确缓存和重用图像资源。例如,在您的情况下,它将帮助您始终使用相同的内存中图像,而不是每次加载新图像,最终导致 OutOfMemoryException。
您可以简单地将所有 Image 类替换为 CachedImage 并设置相当多的属性来控制缓存、下采样和其他操作。这是文档:Xamarin.Forms API
关于ImageSource 未释放并创建 OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45980579/