我很难为此找到更新的答案。
到目前为止,我的目标是让我的资源<16mb。但是随着我走得越远,这变得越来越难,我的意思是,一个 1000x1000 .Png 文件使用大约 1mb。
显然我的目标是让它尽可能小,但我应该开始担心什么尺寸?计划为 android >2.1 发布
您将获得的最低堆空间是16 MB
IIRC。您可能会被分配到64 MB
,甚至更多,但您应该始终尝试在 16 MB 以下进行操作。请记住,如果您可以获得更多堆空间,并且您确实尝试使用它,您最终可能会从内存中替换其他应用程序,并给用户带来一些小问题或在某些情况下是大问题。
并不是你不能获得更多的空间。事实是,您应该尽可能让您的应用成为 Android 公民,并尽可能对设备友好。
您可以通过以下方式获得最大的 hep 大小:
Log.d(TAG,"Memory Class: " + ((ActivityManager) getSystemService(ACTIVITY_SERVICE)).getMemoryClass());
Log.d(TAG,"Heap size: " + Runtime.getRuntime().maxMemory());
如果您正在加载大 PNG 文件,您应该寻找有关如何在 Android 上处理大图像的最佳实践,但请记住,您的一些 BitmapFactory 选项对图像的加载方式有巨大影响:
-inScaled 设置后可能会在具有高屏幕密度的新设备中将位图内存大小增加 2 或 3 倍,
-ARGB 类型可能会从每像素 2 个字节(RGB_565 和 ARGB_4444)变为 4 个字节(ARGB_8888),因此再次乘以 2。
祝你好运。