做项目时,从server端请求了3M左右的数据,然后进行json解析,数据存储。在中高端手机上面测试没有问题,后来使用一款三星手机,一直报OOM,导致crash。
每款手机都会给app分配固定的内存,供其是使用,
比如:
–G1: 16MB
– Nexus One: 32MB
如果超过这个限制,则会报OOM。
那怎么解决这个问题呢,最简单的方法是针对android3.0以上的系统,在application中加入权限android:largeHeap=true,这样系统会在app需要较大内存时,逐渐分配给app;
其实个人不倾向使用这种方法,还是应该从根本入手,从代码层面进行优化,同时也要对server端的数据进行优化,尽量不要一次性的处理超过1M的数据。
大家利用
<span style="font-size:18px;">int memClass = activityManager.getMemoryClass();</span>
得到自己手机的限制内存大小;