c# - 在 Xamarin.Forms 上加载图像时内存不足

标签 c# xamarin.forms out-of-memory

我的应用需要加载同一张图片一定次数。因此,我需要管理内存使用情况,因为在几次迭代后它会耗尽内存。我正在尝试使用垃圾收集器,但它不起作用。我在我的内容页面中这样做。

我的代码如下:

private async Task ExecuteTests(string imageResource) 
{

    // Do stuff

    for (int q = 0; q < NUMBER_OF_TESTS; q++) {

        // Do some work

        await LoadImageAsync (imageResource);

        // Do stuff

        if (q < NUMBER_OF_TESTS - 1) {
            stkImage.Children.Remove(mImageTested);
            mImageTested = null;
            GC.Collect ();
        }
    }
}

private async Task LoadImageAsync(string imageURI) 
{
    mImageTested = new Image { Aspect = Aspect.AspectFit };
    Task<ImageSource> result = Task<ImageSource>.Factory.StartNew(() => ImageSource.FromFile(imageURI));
    mImageTested.Source = await result;
    stkImage.Children.Add(mImageTested);
}

最佳答案

也许这可以帮助您管理内存:

https://github.com/luberda-molinet/FFImageLoading

关于c# - 在 Xamarin.Forms 上加载图像时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37638064/

相关文章:

c# - 将 GUID 转换为十进制字符串(也称为以十进制为基数的逗号分隔的大整数)

ios - 提交到使用 iOS 12.1 SDK 构建的 App Store

c# - TcpClient 读取 OutOfMemoryException

c++ - 增加 eclipse CDT 中的堆栈大小?

c# - 如果 setter 是内部的,则 Getter 不工作

C# NET4.0 任务保持引用

android - Visual Studio for Mac 无法部署到兼容的 Android 模拟器

ios - xamarin 表单中的钥匙串(keychain)配置

通过 Dijkstra 算法从每个节点作为源计算到所有节点的最短路径时,Java 内存不足堆错误

javascript - 如何在其操作回调中禁用自定义 DataTables 按钮?