一、什么是内存泄漏?
对象已经没有被应用程序使用,由于引用或者其它垃圾回收器不能或者无法回收它们。
二、Activity中使用Handler为什么会造成泄漏
1.非静态的内部类和匿名内部类都会隐式地持有其外部类的引用
2.new Handler(){}是匿名内部内构造对象的格式
1 | new 父类构造器(参数列表)|实现接口() |
匿部类的形式构造Handler
1 | /** |
三、如何避免使用Handler造成内存泄漏
1.声明静态内部内和弱引用
1 | private MyHandler myHandler=new MyHandler(this); |
2.onDestroy()的时候调用Handler的removeCallbacksAndMessages(null),清除所有回调和消息
1 | @Override |