android性能优化
2015-12-28 10:54
344 查看
用过android手机和iPhone手机的都知道,一般情况下,iPhone手机的流畅度是android手机所不能比的,尽管从android4.2开始加入了ProjectBuffer(黄油计划)和android5.0新加的ART虚拟机让android手机有了质的提升,但是却依然相差很多,而我们就是要在有限的空间创造优秀的代码,提升android的性能与稳定性
(一)内存泄露
(1)什么是内存泄露
在java中有些对象的生命周期是有限的,当他们完成了特定的逻辑之后将会被垃圾回收,但是,如果在对象的生命周期本来应该被垃圾回收时还被其他对象持有引用,那就会大致内存泄露,这样随着我们应用的长时间使用,它所占的内存就无限增大
(2)内存泄露会造成什么后果
应用卡顿,响应变慢(内存占用过多,虚拟机频繁GC)
应用切到后台的时候被变成了空进程,相当于资源都被回收了
应用频繁崩溃,主要是内存泄露导致的oom(内存溢出)
(3)如何导致内存泄露
事例:
(4)可能导致内存泄露的原因
Context的使用不当,对context的引用超过其自身生命周期
非静态内部类持有外部类的引用(Handler等)
内部线程的运行时间超出外部类的生命周期
注册的对象没有及时反注册(例如监听器广播等)
创建的对象没有及时关闭(Cursor等)
(5)如何处理内存泄露
对于引用Context的,如果可以使用ApplicationContext尽量时候ApplicationContext
对于内部类,可以声明为静态内部类和弱引用来处理
对于一些线程生命周期超长的可以在需要销毁的时候手动调用线程的销毁方法,线程的join()方法,AsyncTask作为外部类并且把外部引用设置为弱引用
注册对象要记得反注册
数据库的Cursor对象在不使用的时候记得及时关闭
(一)内存泄露
(1)什么是内存泄露
在java中有些对象的生命周期是有限的,当他们完成了特定的逻辑之后将会被垃圾回收,但是,如果在对象的生命周期本来应该被垃圾回收时还被其他对象持有引用,那就会大致内存泄露,这样随着我们应用的长时间使用,它所占的内存就无限增大
(2)内存泄露会造成什么后果
应用卡顿,响应变慢(内存占用过多,虚拟机频繁GC)
应用切到后台的时候被变成了空进程,相当于资源都被回收了
应用频繁崩溃,主要是内存泄露导致的oom(内存溢出)
(3)如何导致内存泄露
事例:
<span style="font-size:18px;">public class TestActivity extends Activity{ private TestUtil util = null; @Override protect void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); util = TestUtil.getInstance(this); } }</span>很明显本当TestActivity该被回收时,却被TestUtil所持有
(4)可能导致内存泄露的原因
Context的使用不当,对context的引用超过其自身生命周期
非静态内部类持有外部类的引用(Handler等)
内部线程的运行时间超出外部类的生命周期
注册的对象没有及时反注册(例如监听器广播等)
创建的对象没有及时关闭(Cursor等)
(5)如何处理内存泄露
对于引用Context的,如果可以使用ApplicationContext尽量时候ApplicationContext
对于内部类,可以声明为静态内部类和弱引用来处理
对于一些线程生命周期超长的可以在需要销毁的时候手动调用线程的销毁方法,线程的join()方法,AsyncTask作为外部类并且把外部引用设置为弱引用
注册对象要记得反注册
数据库的Cursor对象在不使用的时候记得及时关闭
相关文章推荐
- Android中sqlite性能优化
- Android 使用百度地图API遇到的BUG
- android ndk 虚拟串口通信
- Android字体的添加
- android 文件上传表单 详解
- Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)
- Android版添加phonegap--融云即时通讯插件教程
- Android根据经纬度获取地址,眼前一亮
- 《Android源码设计模式解析与实战》读书笔记(十二)
- MAC中设置android adb环境变量
- 使用SVG图片格式
- Android AysncTask的使用
- Android 内存泄露
- android时间对话框TimePickerDialog介绍
- Android验证码倒计时
- Android Jni中JNI_OnLoad的地位和使用
- Android Paint类的介绍
- Android四大基本组件介绍与生命周期
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
- android 开发人员须了解的开发者选项