android内存泄漏快速解决——正确处理handler

hanlder内存泄漏

使用了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的数量只会增加不会减少,直到手动结束整个应用

Android内存泄漏解决(总)

你可能感兴趣的:(android内存泄漏快速解决——正确处理handler)