c# - Xamarin Android - OutOfMemoryError 异常 - 大图

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

我得到了一个 InflateException 并且抛出了一个 OutOfMemoryError 异常。我知道我应该能够通过减小图像的大小/分辨率,或者通过将 android:largeHeap="true" 添加到我的 list 来解决这个问题,但是发生了一些奇怪的事情。

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

有没有一种方法可以确保在从其中一个 fragment 返回时处理所有内容?

FragmentOnCreateView中抛出异常的行:

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

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

最佳答案

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

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

System.GC.Collect();

关于c# - Xamarin Android - OutOfMemoryError 异常 - 大图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34531821/

相关文章:

c# - 使用表达式树生成 LINQ 查询

c# - 访问 Google Drive Api 时部署后访问被拒绝

java - 多个错误通知

ios - Xamarin iOS Geolocator 后台服务在大约 30 分钟后死亡

c# - 如何使用 SignalR 保证消息传递?

c# - 具有嵌套对象的构建器模式

android - 如何仅为本 map 库(我手机上的本地镜像)注册 SEND Intent ?

java - Android [string array] 无法解析或不是字段

c# - Android - 无法在 Xamarin.forms 中打开数据库(SQLite 异常)

.net - 如果附加了调试器,为什么我的堆栈跟踪仅包含行号?