Xamarin表单异常堆大小和OutOfMemoryError

问题描述 投票:1回答:3

如何在我的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

xamarin xamarin.android xamarin.forms
3个回答
1
投票

转到项目选项> Android Build>常规>启用MultiDex和选项> Android Build> Advacnced> JavaHeapSize(设置3G),在清单文件中,您可以在Application Tag中添加android:largeHeap =“true”

<application android:largeHeap="true"/>

1
投票

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

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/


-1
投票

我的贡献,它对我有用:

[assembly:Application(LargeHeap = true)]

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

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

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.