ImageSource 未释放并创建 OutOfMemoryException

标签 image xamarin xamarin.forms imagesource

我正在开发 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/

相关文章:

android - 缩放图像显示某种平铺

android - 如何减少 Visual Studio 2015 中 Xamarin Forms 应用程序的用户代码大小?

c# - 如何在不中断用户体验的情况下在后台轮询 webapi 请求?

xamarin - Android CardView 的自定义渲染器不显示 Forms 组件内容

xamarin.forms - 如何更改使用 Xamarin Forms 创建的 .apk 的名称?

animation - Xamarin Forms - 如何在 StackLayout 中显示/隐藏项目的动画?

html - 跟随背景图像的 div

javascript - 需要运行 javascript 后从 php 加载的动态图像

c# - Xamarin.iOS应用程序套接字在实际设备上不起作用

html - 在列框的中间对齐图像