Xamarin Android - OutOfMemoryError异常 - 大图像

时间:2015-12-30 14:56:30

标签: c# android xamarin fragment out-of-memory

我在InflateException前面引发OutOfMemoryError异常。我知道我应该能够通过减小图像的大小/分辨率,或者通过在我的清单中添加android:largeHeap="true"来解决问题,但是发生了一些奇怪的事情。

当我第一次给视图充气时,不会抛出此异常。我有Activity我使用的PreferenceFragment包含PreferenceFragment。当您在Fragment中选择一行时,您会被带到显示一些图像和文字的OnCreateView。只有在这些片段之间来回导航之后才会抛出异常。在我看来,某些东西没有得到妥善处理,因为这会在任何一个碎片上发生,但绝不会发生在第一次,第二次或第三次。

有没有办法可以确保从其中一个片段返回时一切都被处理掉了?

Fragment的{​​{1}}中抛出异常的行:

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

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

2 个答案:

答案 0 :(得分:3)

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

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

System.GC.Collect ();

答案 1 :(得分:0)

我将其从Android移植到C#

https://github.com/koush/UrlImageViewHelper

为了处理大图像,我可以在需要时发布代码。