常见的内存优化点:
1、只需要UI提供一套高分辨率的图,图片建议放在drawable-xxhdpi文件夹下,这样在低分辨率设备中图片的大小只是压缩,不会存在内存增大的情况。如若遇到不需缩放的文件,放在drawable-nodpi文件夹下。

2、图片优化:

颜色模式:RGB_8888->RGB_565

降低图片大小

降低采样率

3、在App退到后台内存紧张即将被Kill掉时选择重写onTrimMemory()方法去释放掉图片缓存、静态缓存来自保。

4、item被回收不可见时释放掉对图片的引用:

ListView:因此每次item被回收后再次利用都会重新绑定数据,只需在ImageView onDetachFromWindow的时候释放掉图片引用即可。

RecyclerView:因为被回收不可见时第一选择是放进mCacheView中,这里item被复用并不会只需bindViewHolder来重新绑定数据,只有被回收进mRecyclePool中后拿出来复用才会重新绑定数据,因此重写Recycler.Adapter中的onViewRecycled()方法来使item被回收进RecyclePool的时候去释放图片引用。

5、集合优化:

Android提供了一系列优化过后的数据集合工具类,如SparseArray、SparseBooleanArray、LongSparseArray,使用这些API可以让我们的程序更加高效。HashMap工具类会相对比较低效,因为它需要为每一个键值对都提供一个对象入口,而SparseArray就避免掉了基本数据类型转换成对象数据类型的时间。

使用SparseArray来代替key为int类型的Hashmap,用ArrayMap来代替其他类型key的Hashmap。

6、避免创作不必要的对象:字符串拼接使用StringBuffer,StringBuilder。

7、onDraw方法里面不要执行对象的创建。

8、使用static final 优化常量。

9、使用增强型for循环语法。

10、在没有特殊原因的情况下,尽量使用基本数据类型来代替封装数据类型,int比Integer要更加有效,其它数据类型也是一样。

11、适当采用软引用和弱引用。

12、采用内存缓存和磁盘缓存。

13、使用ViewStub、include、merge等标签。

14、避免使用枚举。

15、少使用浮点数类型。

16、使用混淆。

17、进程占用内存较大,尽量少使用多进程。

Android减少内存占用相关推荐

  1. Delphi FMX正确加载图片最大限度减少内存占用(之一TBitmapSurface)

    Delphi FMX正确加载图片最大限度减少内存占用(之一TBitmapSurface) 国庆前,无意间发现App内存占用陡增,发现是几张4K图片(7680x4320像素)加载引发的(TImage.B ...

  2. Delphi FMX正确加载图片最大限度减少内存占用(之二TImageList)

    Delphi FMX正确加载图片最大限度减少内存占用(之二TImageList) 继上篇<Delphi FMX正确加载图片最大限度减少内存占用(之一TBitmapSurface)>之后,我 ...

  3. Android 图片内存占用过大?不存在的...

    转载请注明出处:http://blog.csdn.net/hjf_huangjinfu/article/details/79281829 概述 Android 平台的内存,一直都是比较珍贵的,防止内存 ...

  4. java 减少内存_java中减少内存占用小技巧

    Java做的系统给人的印象是什么?占内存!说道这句话就会有N多人站出来为java辩护,并举出一堆的性能测试报告来证明这一点. 其实从理论上来讲java做的系统并不比其他语言开发出来的系统更占用内存,那 ...

  5. scrapy自定义Request的缓存策略(减少内存占用)

    scrapy-redis大概的架构: 从redis中拉url,构造Request对象,写入SCHEDULER_QUEUE_CLASS定义的队列中,调度器从队列中拉取Request进行抓取 想自定义Re ...

  6. Win10 减少内存占用; google浏览器器减少CPU占用

    减少Win10内存占用 关闭快速启动 google Chrome 系统自动更新 桌面窗口管理器 Antimalwar Service Excultable 方法一 方法二 结果 关闭快速启动 平时使用 ...

  7. 关于SetProcessWorkingSetSize减少内存占用 的错误理解

    一.C# Winform应用程序占用内存较大解决方法整理(转) 原文:  http://www.jb51.net/article/56682.htm 背景: 微软的 .NET FRAMEWORK 现在 ...

  8. SetProcessWorkingSetSize减少内存占用

    系统启动起来以后,内存占用越来越大,使用析构函数.GC.Collect什么的也不见效果,后来查了好久,找到了个办法,就是使用 SetProcessWorkingSetSize函数.这个函数是Windo ...

  9. docker 安装 MySQL 8,并减少内存占用 记录

    目前vps 1cpu 512m内存 MySQL内存占用77% ,约350m ,经过修改配置文件优化后如下 $ ps aux 进入docker bash $ docker exec -it pwc-my ...

最新文章

  1. Open***服务器安装配置及客户端调试
  2. vue 实现动态增加输入框_vue实现一个6个输入框的验证码输入组件
  3. 19 Error handling and Go go语言错误处理
  4. RocketMq案例,生产者,消费者,消息订阅
  5. 第一节:别出心裁的HTML5简介
  6. 个人收藏的flex特效网址【经典中的极品】
  7. 为什么谷歌被骂上热搜一点也不冤,详解FLoC背后联邦计算
  8. JSP JavaBean作用范围
  9. 如何建立个人创业的基石
  10. 4G模块使用记录移远EC20、BC20
  11. 小D课堂 - 新版本微服务springcloud+Docker教程_6-05 高级篇幅之高并发情况下
  12. Ubuntu 16.04上安装Code::Blocks
  13. 谁说中国没有林纳斯,中国初代IT宗师的封神榜
  14. JDY-24M钥匙标签使用说明
  15. Spring Validation 验证框架全面总结
  16. Android stdio调试程序闪退或者报错:xxx keeps stopping解决方案
  17. eNSP:如何解决防火墙上出现大量的提示信息呢?
  18. Alpha阶段敏捷冲刺⑧
  19. Android 6.0 状态栏信号图标分析
  20. *dessertpku 1950

热门文章

  1. java做橡皮擦效果_基于canvas剪辑区域功能实现橡皮擦效果
  2. 女生应该找什么样的男生
  3. Nginx负载均衡与动静分离
  4. OpenCV GrabCut算法:前景分割和提取
  5. java怎么实现踢掉在线用户_Java多人在线聊天室(3)— 踢人下线功能
  6. Android Activity栈管理 制定关闭某一个Activity,关闭所有Activity
  7. Oracle高级复制的同步复制的配置步骤说
  8. php入门到精通精典案例教程
  9. 迪杰斯特拉算法matlab实现
  10. win10 共享wifi给手机