【问题标题】:Xamarin Universal Image Loader Out of Memory exceptionXamarin 通用图像加载器内存不足异常
【发布时间】:2014-02-20 00:23:10
【问题描述】:

我已成功转换 Universal Image Loader 以将其与 xamarin.android 一起使用。 一切正常,直到我显示大量图像 - OOM 异常开始出现。 我已经尝试了 UIL 站点或 stackoverflow 答案中建议的缓存/图像设置的所有可能组合 - 在我的情况下似乎没有一个有效。

我使用 Android 调试监视器来查看发生了什么。据我所知,UIL 会导致内存泄漏。我可以这么说,因为如果不使用图像加载器来加载位图,就没有泄漏。 但是我开始认为这种泄漏的原因不是由 UIL 直接引起的,因为无论我选择什么配置,它都存在。

所以我的问题是它还能是什么?

【问题讨论】:

  • 有机会分享你的端口吗?
  • “我的端口”是什么意思?
  • 您的 Universal Image Loader 版本 :)

标签: android memory-leaks xamarin universal-image-loader


【解决方案1】:

所以在调试和谷歌搜索后,我发现Xamarin Garbage Collection Article。 结论是,UIL 加载的位图(有或没有缓存)无法释放,因为托管位图(Mono/.net)和框架位图(Java)实例之间存在关系。 为了打破这种关系,我在 IImageLoadingListener 的实现中调用了 OnLoadingComplete 中的 bitmap.Dispose()。

    public void OnLoadingComplete(string p0, View p1, Bitmap p2)
    {
        var spinner = ((View)p1.Parent).FindViewById<ProgressBar>(Resource.Id.loading);
        spinner.Visibility = ViewStates.Gone;
        p2.Dispose();
    }

【讨论】:

  • 不太明白。该死的
猜你喜欢
  • 2011-06-18
  • 2016-07-19
  • 2014-08-12
  • 2018-03-11
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
相关资源
最近更新 更多