我们是否可以依靠我们的 Android 应用程序获得一定数量的内存,或者它是否因手机型号或操作系统版本而异?
例如,我有一个内存缓存,我将其限制设置为 5 MB。如果在一台设备上,我的应用程序只能使用 8 MB 内存,而在另一台设备上,24 MB,我想调整内存缓存的上限以利用更多或更少的内存。
有什么办法可以解决这个问题,金额甚至会有所不同吗?
是的,最大堆大小因设备而异。您可以通过调用来检查设备的每个应用程序的大致内存类getMemoryClass()
。
返回当前设备的每个应用程序的近似内存类。这让您了解应该对应用程序施加多大的内存限制才能让整个系统发挥最佳作用。返回值以兆字节为单位;基准 Android 内存类是 16(恰好是这些设备的 Java 堆限制);某些具有更多内存的设备可能会返回 24 甚至更高的数字。
更改应用程序堆大小的唯一内置方法是android:largeHeap="true"
在AndroidManifest.xml
. 这通常会将堆大小从 48 增加到 128。请记住,这种方法仅适用于 3.x 平板电脑。否则,您将需要一个有根设备,这显然不是您作为开发人员想要依赖的东西。