问题描述
一个页面做了动画特效,这个页面有可能跳转到其他页面,并长时间不返回,该页面此时已经不活跃了,该页面的对象为无用对象,存在内存泄漏风险
问题分析
这个activity的特性是
-
有可能跳转到其他页面
-
有可能从其他页面跳转回来
-
点击back按钮,并不会杀死当前页面
页面不再处于前台的时候,未将动画暂停,释放动画资源
问题解决
-
优化stop的实现为:
/**
* 停止播放
*/
public synchronized void stop() {
mShouldRun = false;
mHandler.removeCallbacksAndMessages(null);
}
-
在onPause、onResume做动画的停止、恢复处理,避免重复创建动画;
-
在onDestory做动画的销毁处理,避免无法gc