android内存泄漏快速解决——正确处理handler
2020-01-16 本文已影响0人
朱_c713

使用了handler延迟一定时间执行Runnable代码块,而在Activity结束的时候又没有释放执行的代码块,导致了内存泄漏。那么只要在Activity结束onDestroy的时候,释放延迟执行的代码块不就可以了,确实是
一般来说我们在Activity的ondestory的时候,就会中断所有的handler的callback。这种方法就可以解决这种问题。
override fun onDestroy() {
super.onDestroy()
handler.removeCallbacksAndMessages(null);
}
注意:上面的例子,是Handler临时性内存泄漏,只要Handler post的代码块执行完毕,被引用的Activity就能够释放。

geng
更严重的泄漏时这种(由于红线代码,引起的泄漏),这种也比较常见,这种泄漏要等到程序结束后,才会释放。
使用dumpsys meminfo查看可以验证,多次打开后退Activities的数量只会增加不会减少,直到手动结束整个应用