protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
global::Xamarin.Forms.Forms.Init (this, bundle);
LoadApplication (new App ());
if (bitmapChart != null && !bitmapChart.IsRecycled)
{
bitmapChart.Recycle();
}
bitmapChart = Android.Graphics.Bitmap.CreateBitmap (2000, 800, Android.Graphics.Bitmap.Config.Argb8888);
}
public volatile Android.Graphics.Bitmap bitmapChart;
我想创建易失性Bitmap。 当我第三次打开我的应用程序时,我有异常:Java.Lang.OutOfMemoryError。
如果我使用静态Bitmap而不是volatile Bitmap,应用程序可以正常工作,我可以多次打开它。
为什么我不能使用volatile Bitmap?
答案 0 :(得分:1)
您应该设置更大的Java Heap size
。转到Android项目选项 - >高级并将Java Heap size
设置为1G或2G。
在Android应用程序清单中将android:largeHeap
设置为true
android:largeHeap你的应用程序的进程是否应该是 用大型Dalvik堆创建。这适用于所有流程 为应用程序创建。它仅适用于第一个应用程序 加载到一个过程中;如果您使用共享用户ID允许 要使用一个进程的多个应用程序,它们都必须使用此选项 一直或他们将有不可预测的结果。大多数应用应该 不需要这个,而应该专注于减少他们的整体 内存使用以提高性能。启用此功能也不会 保证固定增加可用内存,因为有些设备 受到总可用内存的限制。
要在运行时查询可用内存大小,请使用这些方法 getMemoryClass()或getLargeMemoryClass()。