1. android:installLocation=" auto | internalOnly | preferExternal"
上次恰巧碰到手机内存不足的问题,后面一查,发现手机上的app默认都安装到内存中了。只要将app移到存储上,但发现其中有些竟然不能移,原来是和这个属性有关。
auto:默认安装到内存中,但可以手动移至存储。
internalOnly:只能安装到内存中。
preferExternal:安装到存储中。
默认是internalOnly,如果未设置这个属性,那么app就不能移动到存储上了。
2. android:largeHeap="true"
既然扯到这个属性了,那就写一点有关android内存的东西吧。the baseline Android memory class is 16 (which happens to be the Java heap limit of those devices); some device with more memory may return 24 or even higher numbers.也就说android程序的内存一般在16M左右,当然可能24M或24M+。android内存分为两不部分:native和dalvik。两部分加起来不能超过设置的最大值,那么最大值在哪里设置的呢。不同机器的最大值设定各有不同,在/system/build.pro文件中。
获取当前机器的可用内存方法:
int availableMem = ((ActivityManager)getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
long availableMem2 = Runtime.getRuntime().maxMemory();
前者单位是M,后者是byte。
如MX2中的值:
dalvik.vm.heapgrowthlimit=192m
dalvik.vm.heapsize=512m
heapgrowthlimit就是app的最大内存值,heapsize么就是当android:largeHeap="true"所能用的最大值了。