案例:从Activity A 跳转到 Activity B,B中有一个加载动画(只有启动动画的代码,没有结束的代码),然后再跳转回A,此时B的动画还在进行,出现内存泄漏。
Memory Monitor定位内存泄漏:profile模式运行App,运行上述跳转过程,选择Capture heap dump查看对象使用内存情况。点击record。
record之后等待生成,如图,Memory Monitor自动帮助定位到内存泄漏处。
点击可以查看引用链接(GC Roots):


定位到内存泄漏位置,确定是动画未结束导致,解决方案:调用onDetachedFromWindow()方法当view移除窗口时停止动画。
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
animator?.cancel()
}
894

被折叠的 条评论
为什么被折叠?



