在我的应用用户中,选择图像和程序可让用户对图像进行更改.由于有很多不同的
Android设备,我的程序在一些设备上崩溃,这些设备的堆大小较少.我想计算用户手机的最佳尺寸,以免因VM预算而崩溃.我添加了“Picsay Pro”的截图,它正是我正在寻找的.我知道“BitmapFactory.Options”我唯一的问题是找到一种方法来决定图像尺寸,这不会因为VM预算而导致应用程序崩溃.
解决方法
计算手机剩余的可用空间:
long freeMemory =(Runtime.getRuntime().maxMemory()) – (Debug.getNativeHeapAllocatedSize());
哪里,
Runtime.getRuntime().maxMemory() – 返回总堆限制大小(以字节为单位).
Debug.getNativeHeapAllocatedSize() – 返回应用程序已使用的数据量(以字节为单位).
通过此公式计算您正在使用的位图的大小,
long Bytes_allocated =(图像的高度)*(图像的宽度)* 4;
比较freeMemory和Bytes_allocated以选择适合您的应用程序的大小.