【问题标题】:Xamarin Android - OutOfMemoryError exception - large imageXamarin Android - OutOfMemoryError 异常 - 大图
【发布时间】:2015-12-30 14:56:29
【问题描述】:

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

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

有没有一种方法可以确保从这些碎片之一返回时所有东西都被处理掉?

FragmentOnCreateView 中引发异常的行:

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

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

【问题讨论】:

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


【解决方案1】:

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

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

System.GC.Collect ();

【讨论】:

【解决方案2】:

我将它从 Android 移植到 C#

https://github.com/koush/UrlImageViewHelper

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    相关资源
    最近更新 更多