我在Android中有一个使用AnimationDrawable的自定义视图。如果我在我的视图中调用了AnimationDrawable.start(),并且在不调用stop()的情况下将应用程序推送到后台,那么是否会在后台耗尽系统资源?
如果是,我应该如何检测前景/背景的“视图”?我试图避免将代码拆分为活动,因为我希望自定义视图在处理它自己的生命周期时是自给自足的。
编辑:请注意,我知道Activity.onPause和onResume调用可以帮助我,但我不希望我的自定义视图的使用者编写生命周期方法的代码 - 我希望我的自定义视图能够自行处理。答案 0 :(得分:0)
可以肯定的是,您可以通过覆盖其onPause()
和onResume()
来检测活动何时进入前景/后台,如下所示:
@Override
protected void onPause() {
AnimationDrawable.stop();
}
@Override
protected void onResume() {
AnimationDrawable.start();
}
答案 1 :(得分:0)
如果您想要管理"应用程序转到后台,那么您在某些时候需要活动(或片段)。状态。
我在自定义视图中添加了两种方法:
public void startAnimation(){
//start the AnimationDrawable
}
public void stopAnimation(){
//stop the AnimationDrawable
}
然后,在你的Activity / Fragment
里面MyCustomView mCustomView
//initialize view
@Override
protected void onResume() {
mCustomView.startAnimation();
}
@Override
protected void onPause() {
mCustomView.stopAnimation();
}
答案 2 :(得分:0)
要让视图自行处理,请覆盖onDetachedFromWindow()
并在其中停止动画。您可以检查它是否在onDraw
内制作动画,如果已停止则重新开始。