Xamarin表单异常堆大小和OutOfMemoryError

时间:2016-12-09 07:42:12

标签: xamarin xamarin.android xamarin.forms

如何在我的Xamarin.Forms应用程序中启用大堆?

以下是MainActivity.cs Android代码:

 public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);
        global::Xamarin.Forms.Forms.Init(this, bundle);
        RoundedBoxViewRenderer.Init();
        LoadApplication(new App());
    }
}

请参阅下面的例外截图:

Exception Screenshot

3 个答案:

答案 0 :(得分:1)

转到项目选项> Android Build>一般>启用MultiDex&选项> Android Build> Advacnced> JavaHeapSize(设置 3G ),在清单文件中,您可以在应用程序标记中添加 android:largeHeap =“true”

<application android:largeHeap="true"/>

答案 1 :(得分:1)

通过Appication属性设置Dalvik / Art大堆的Xamarin方法:

Application.cs

using System;
using Android.App;
using Android.Runtime;

namespace LargeHeap
{
    [Application(LargeHeap = true)]
    public class XamarinApplication : Application
    {
        public XamarinApplication(IntPtr handle, JniHandleOwnership ownerShip) : base(handle, ownerShip)
        {
        }
    }
}
  

如果为true,则应使用大型Dalvik堆创建进程;否则,将使用默认的Dalvik堆创建进程。

参考:https://developer.xamarin.com/api/property/Android.App.ApplicationAttribute.LargeHeap/

答案 2 :(得分:-1)

我的贡献对我有用:

[程序集:应用程序(LargeHeap = true)]

namespace Project.Droid
{
    [Activity(.............)]

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {

    }
}