Android进阶

一、性能优化

ANR,内存溢出,内存抖动,内存泄漏,UI卡顿,冷启动优化
(https://www.jianshu.com/p/3e44250ca2de)
[https://www.cnblogs.com/zhaojianhua/p/8574136.html]
内存泄漏:是指无用对象(不在使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费。
内存抖动是指内存在短时间内频繁地分配和回收,而频繁的gc会导致卡顿,严重时和内存泄漏一样会导致OOM。
内存溢出主要是由于加载大的图片引起的。

  1. 单例和静态变量
    静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

  2. 匿名内部类
    非静态内部类持有外部类的引用,如果在这个内部类里面有static等变量,就会和应用的生命周期一样长,所以就会使外部的activity没法释放。

3.handler
mHandler是MainActivity的非静态内部类的实例,它持有外部类的引用。handler的消息是在一个loop中不断的轮询处理消息,那么当MainActivity退出时,消息队列中还有没处理的消息或正在处理的消息,所以会造成内存泄漏

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容