看一段代码
运行结果将 打印日志 i: 10
new Runnable是一个内部类, 持用外部类TestActivity的引用i, 由于内部类不会自行销毁,
并且由于 i 被内部类引用了,导致TestActivity不能被回收。
那么 TestActivity 怎么样才能被回收, 只有内部类被销毁了,才能做到
解决方法:
第一种方法: hanlder调用removeCallbacksAndMessages(null)
第二种方法: 使用静态内部类, 因为 静态内部类不能持有外部类的引用。 持有将报错。
然后在静态内部类中使用弱引用, 可防止内存泄漏。
运行结果如下: