Xamarin表格微图生成“ OutOfMemoryError”

时间:2018-07-24 09:47:55

标签: xamarin xamarin.forms

我试图在我的应用程序中使用Microcharts图,该应用程序使用Xamarin.Forms(针对Android,iOS和UWP)。

我尝试按照以下几篇教程来获取要显示的图表,但每次都会导致错误:

  

未处理的异常:   Java.Lang.OutOfMemoryError:无法分配240048012字节分配,其中包含5713730可用字节和87MB直到OOM

如果我创建一个新的Xamarin.Forms项目,则不会发生此错误,并且绝对可以正常运行(我正在同一台Android设备上运行,即Samsung SM-J320FN)。

这是简化的XAML代码:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Foo.DetailPage" xmlns:forms="clr-namespace:Microcharts.Forms;assembly=Microcharts.Forms"> <ContentPage.Content>

<StackLayout Grid.Row="2"> <forms:ChartView x:Name="priceChart" HeightRequest="150"/> </StackLayout>

这是背后的代码:

//Temp data for charts List<Entry> entries = new List<Entry> { new Entry(200) { Color=SKColor.Parse("#FF1943"), Label ="January", ValueLabel = "200" }, new Entry(400) { Color = SKColor.Parse("00BFFF"), Label = "March", ValueLabel = "400" }, new Entry(-100) { Color = SKColor.Parse("#00CED1"), Label = "Octobar", ValueLabel = "-100" }, };

public DetailPage(string Code)
{
     ((NavigationPage)Application.Current.MainPage).BarBackgroundColor = Color.FromHex("27b286");

    InitializeComponent();

    priceChart.Chart = new LineChart() { Entries = entries, BackgroundColor = SKColor.Parse("#00FFFFFF") };
}

没有此图表,即使生成列表并且该图表包含在XAML中,页面也可以正常运行,这似乎是通过导致问题的背后代码初始化图表的原因。

1 个答案:

答案 0 :(得分:3)

我在AndroidManifest.xml中添加了<application android:hardwareAccelerated="true" android:largeHeap="true"></application>,并且可以正常工作,但是我仍然不知道是什么原因导致使用了如此多的内存。