摘要:前几天推广我们APP的时候,有些手机加载引导页的时候会闪退或崩溃,在Bugly显示是OOM异常。
然后Bugly上面显示的解决方案是:
该异常表示未能成功分配字节内存,通常是因为内存不足导致的内存溢出。
[解决方案]:OOM就是内存溢出,即Out of Memory。也就是说内存占有量超过了VM所分配的最大。怎么解决OOM,通常OOM都发生在需要用到大量内存的情况下(创建或解析Bitmap,分配特大的数组等),这里列举常见避免OOM的几个注意点:
1.适当调整图像大小。
2.采用合适的缓存策略。
3.采用低内存占用量的编码方式,比如Bitmap.Config.ARGB_4444比Bitmap.Config.ARGB_8888更省内存。
4.及时回收Bitmap。
5.不要在循环中创建过多的本地变量。
6.自定义对内存分配大小。
7.特殊情况可在mainfests的Application中增加 android:largeHeap="true"属性,比如临时创建多个小图片(地图marker)
这里并没有我想要的答案,我想要简单粗暴的一种方式。
直到我看到了这篇文章
解决方案:
Step1: 将initViewPage中
imageView.layoutParams=params
imageView.setBackgroundResource(imageIdArray[i])
注释掉!!!主要是这里面其实就要求内存加载这些图片了,所以这里先就不设置图片了。
Step2:然后将注释掉的代码贴到PageAdapter的instantiateItem(ViewGroup container,int position)中
在这里面设置背景图片,提高加载速度,解决OOM问题。