作家
登录

Android中内存优化的那些事 - 一个有关图片的优化记录

作者: 来源: 2017-04-27 15:02:10 阅读 我要评论

步调五:

打开gimp GIMP - Downloads. 然后打开方才导出的问题。图像类型根据实际的来,一般都是8888或者565,选择RGB Alpha或者RGB565。然后宽度与高度填写方才萌芽到的参数。最后点击open就能看到实际的图片。

经由过程这个方法,可以直不雅的查看到内存中图片的实际情况。然后我们就可以进一步分析产生问题的实际原因。

经由过程以上方法,定位到了3个问题:

  1. 有大年夜量图片资本占用,首页确切有很多多少图。
  2. 有暂未应用到的图片资本占用(gone状况)。
  3. 有大年夜量蒙疆土片占用,因为设计师请求的效不雅。

结合以上偏素来看下我们碰到的问题。设计角度今朝无法调剂,启事都是泪,这里就不多说了。资本本身已经是RGB565。图片邓晔着应当是fresco的强项,可大年夜现象上看似乎并没有。看来问题可能出在这,回ui页面膳绫情一眼,明白了。

viewpager + fragment + recyclerview,相当于大年夜量图片都属于应用状况,所以fresco不会去释放对应的资本。

解决 - 大年夜量图片占用

临时解决筹划:

为了确保核心逻辑的顺利,经由过程RxBus的方法,在进入和退出核心页面时发送Event事宜,然后在大年夜量应用图片的页面注册接收此系列事宜,遍历所有SimpleDraweeView,调用其Controller的onDetach或onAttach来,大年夜而实现图片资本引用的临时释放和加载恢复。

为什么是临时解决筹划,因为我总认为是一种取巧的方法,理论上看。是不该该直接调用办法来插手fresco的治理流程。所以此处留坑,之后再次深刻懂得fresco的原理后再回填,也欲望大年夜家提些建议或者看法。

解决 - 暂未应用到的图片资本占用

每个页面中,都有处理收集异常及相干数据加载异常的提示。本来的处理方法是经由过程include同一导入后隐蔽,在碰到异常的时刻才显示出来。问题就出在这,这些异常提示本身是小概率触发,但经由过程include标签导入的话,会直接实例化完成,占用内存资本。

改用ViewStub标签,实现按需加载。

为什么竽暌怪是临时解决筹划呢,因为有些机型在黑屏状况下是割断wifi的,当从新进入应用的时刻都邑经由一个联网的过程,所以会先触发联网异常,ViewStub只能加载一次,加载完后就占用内存了。

解决 - 蒙疆土片

解决办法:

测验测验经由过程Processor的方法,预先把蒙版与要显示的图片合成,使得在内存中只保存一份资本。

结不雅

对于大年夜量图片占用的问题,其实大年夜以下几个个偏素来看思虑问题。

  1. 大年夜效不雅设计的角度来避免,尽可能的少应用满屏图片的方法来处篮孟耋。但这方面我小我主意尊敬设计师,专业的工作交给专业的人去处理。
  2. 图片资本本身,在知足效不雅的前提下,尽可能的选用RGB565,也许少量图片不明显,但在量大年夜的情况下,节俭的内存资本照样很客不雅。
  3. 图片资本在不应用的时刻及时释放。

总结

此次大年夜内存高占用入手,解决了因为内存应用量过高导致的内存溢出。等之后碰到内存遗留问题时,再来补下文。

内存问题的排查与解决算是一个老生常谈的话题,因为适配等等情况往往又是一个比较棘手的问题。开辟的时刻很难发明,所以建议一个需求完成后都例行的检查下内存状况,看下是否有问题后者须要调剂的部分。

【编辑推荐】

  1. Android数字跳动的TextView实现
  2. Android用Retrofit 2实现多文件上传拭魅战
  3. Android O中对设备标识符所做的变革
  4. Android自定义控件:类QQ未读消息拖拽效不雅
  5. 开源Anbox在Linux中运行Android应用
【义务编辑:枯木 TEL:(010)68476606】

  推荐阅读

  为什么非全站升级HTTPS不可?

进级HTTPS已经是大年夜势所趋,但如有大年夜量互联网企业迟疑是否要全站进级HTTPS,本文梳理了全站进级HTTPS与部分进级HTTPS的好坏势比较,来断定是否真的有须要进行全站HTTPS进级。HTTPS>>>详细阅读


本文标题:Android中内存优化的那些事 - 一个有关图片的优化记录

地址:http://www.17bianji.com/lsqh/35002.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)