Android引导页过多导致OOM内存泄漏

  

  摘要:前几天推广我们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问题。






posted @ 2017-10-18 19:12  Jason_Jan  阅读(1328)  评论(0编辑  收藏  举报