位图.CreateBitmap异常-内存不足


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:largeHeaptrue

android:largeHeap应用程序的进程是否应该用一个大的Dalvik堆创建。这适用于所有过程为应用程序创建的。它只适用于第一个应用程序加载到进程中的;如果您使用共享用户ID来允许多个应用程序要使用一个进程,它们都必须使用此选项坚持下去,否则会有不可预测的结果。大多数应用程序应该不需要这个,而是应该专注于减少他们的整体提高性能的内存使用。启用此功能也不会保证可用内存的固定增长,因为有些设备

要在运行时查询可用内存大小,请使用方法getMemoryClass()或getlargemmemoryclass ().

相关内容

  • 没有找到相关文章

最新更新