AnimationDrawable是否继续在后台运行?

时间:2015-07-06 21:03:50

标签: android android-animation

我在Android中有一个使用AnimationDrawable的自定义视图。如果我在我的视图中调用了AnimationDrawable.start(),并且在不调用stop()的情况下将应用程序推送到后台,那么是否会在后台耗尽系统资源?

如果是,我应该如何检测前景/背景的“视图”?我试图避免将代码拆分为活动,因为我希望自定义视图在处理它自己的生命周期时是自给自足的。

编辑:请注意,我知道Activity.onPause和onResume调用可以帮助我,但我不希望我的自定义视图的使用者编写生命周期方法的代码 - 我希望我的自定义视图能够自行处理。

3 个答案:

答案 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内制作动画,如果已停止则重新开始。