美文网首页
setContentView() 报 OutOfMemoryE

setContentView() 报 OutOfMemoryE

作者: wusp | 来源:发表于2016-05-17 18:29 被阅读65次

    这次的错误是在进行阿里云测Android云测的兼容性测试时发现的。错误日志为:

    错误日志的意思是说在执行ActivitySplash的setContentView()方法时出现了内存不足的错误。

    然后我去看了ActivitySplash的布局文件,在布局文件并没有引用加载任何的图片。

    不过由于ActivitySplash是启动页,因此我们在ActivitySplash的Style文件中将一张图片设置为背景。

    图片加载内存溢出的错误便来自于这里,而我看了下这张图片的大小,大概18K左右。

    我做了一下搜索和研究,总的来说这个错误的解决方案大致分为3种.

    1. 从图片本身入手:向设计师要更小的图片.

    (1). 使用.jpg格式,png格式的图片会占据比.jpg图片更大的内存空间.

    (2). 对图片进行压缩.

    (3). 使用更小的尺寸(更少的像素值).

    2. 不要在资源文件中进行图片加载,而使用ImageView,然后在Java代码进行动态加载.

    主要原因是我们可以在Java代码中对图片加载进行优化。相关的加载图片优化方案网上很多,不再赘述了。

    3. 申请更大的"heapSize".

    通过在AndroidManifest.xml文件中<application>的标签下设置androiod:largeHeap="true"属性来为App申请更大堆内存。

    但是使用这个方案时有几点需要注意:

    (1). 使用在Android API 11 以上的机型中使用。

    (2). 无法确定申请多大的内存,也就是,所请求的外加堆内存大小多少是由系统自动设置的。

    (3). 有可能会影响手机其他App的运行: 因为手机需要结束其他同时正在运行的App的进程以便释放出RAM来提供给我们的App.

    具体采用哪种方案,还需要结合自身的实际情况来决定。

    相关文章

      网友评论

          本文标题: setContentView() 报 OutOfMemoryE

          本文链接:https://www.haomeiwen.com/subject/hjvirttx.html