Xamarin Android-内存不足错误异常-大图像

本文关键字:图像 异常 错误 Android- 内存不足 Xamarin | 更新日期: 2023-09-27 18:28:33

我得到一个InflateException,它前面有一个抛出的OutOfMemoryError异常。我知道我应该能够通过降低图像的大小/分辨率或将android:largeHeap="true"添加到我的清单中来解决这个问题,但发生了一些奇怪的事情。

当我第一次膨胀视图时,不会引发此异常。我有一个正在使用的Activity,其中包含一个PreferenceFragment。当您在PreferenceFragment中选择一行时,您将进入显示一些图像和文本的Fragment。只有在其中几个片段之间来回导航后才会引发异常。在我看来,有些东西没有得到妥善处理,因为这会发生在任何一个碎片上,但从未发生过第一次、第二次或第三次。

当我从这些碎片中返回时,有没有办法确保所有东西都被处理掉?

Fragment:的OnCreateView中引发异常的行

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    return inflater.Inflate(MyResource, container, false);
}

同样值得注意的是,只有在从活动中打开几个不同的片段后才会抛出异常。你可以整天在同一个之间来回切换,不会抛出异常。

Xamarin Android-内存不足错误异常-大图像

我在开发一个应用程序时遇到了类似的情况。在我的应用程序中,单击一个列表项,向用户显示一个单独片段中的图像。单击三个或四个列表项之后。我看到了一个内存不足的异常,类似于你描述的那个。

我通过显式调用图像显示片段中的垃圾回收来解决这个问题。Xamarin的C#代码如下:

System.GC.Collect ();

我将其从Android移植到C#

https://github.com/koush/UrlImageViewHelper

为了处理大图像,如果你需要,我可以发布代码。