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;
我想创建易失性位图。当我打开我的应用程序第三次,我有一个异常:Java.Lang.OutOfMemoryError.
如果我使用静态Bitmap而不是volatile Bitmap,应用程序可以正常工作,我可以多次打开它。
为什么我不能使用volatile位图?
-
您应该设置更大的
Java Heap size
。进入Android项目选项-> Advanced,设置Java Heap size
为1G或2G -
在Android应用程序清单中设置
android:largeHeap
为true
android:largeHeap应用程序的进程是否应该用一个大的Dalvik堆创建。这适用于所有过程为应用程序创建的。它只适用于第一个应用程序加载到进程中的;如果您使用共享用户ID来允许多个应用程序要使用一个进程,它们都必须使用此选项坚持下去,否则会有不可预测的结果。大多数应用程序应该不需要这个,而是应该专注于减少他们的整体提高性能的内存使用。启用此功能也不会保证可用内存的固定增长,因为有些设备
要在运行时查询可用内存大小,请使用方法getMemoryClass()或getlargemmemoryclass ().