AnimationDrawable 是否在后台保留 运行?
Does AnimationDrawable keep running in background?
我在 Android 中有一个自定义视图,它使用了 AnimationDrawable。如果我在我的视图中调用了 AnimationDrawable.start(),并且我在没有调用 stop() 的情况下将应用程序推送到后台,是否会在后台耗尽系统资源?
如果是,我应该如何检测 "view" 到 foreground/background ?我试图避免将代码拆分为 activity,因为我希望自定义视图能够自给自足地处理它自己的生命周期。
编辑:请注意,我知道 Activity.onPause 和 onResume 调用可以帮助我,但我不希望我的自定义视图的使用者为生命周期方法编码 - 我希望我的自定义视图采用照顾好自己。
可以肯定的是,您可以通过覆盖其 onPause()
和 onResume()
来检测 activity 何时进入 foreground/background,如下所示:
@Override
protected void onPause() {
AnimationDrawable.stop();
}
@Override
protected void onResume() {
AnimationDrawable.start();
}
如果您想管理 "App going to background" 状态,您有时需要 Activity(或片段)。
我将向自定义视图添加两种方法:
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();
}
要让视图自行处理,覆盖 onDetachedFromWindow()
并停止其中的动画。您可以检查它是否在 onDraw
内动画,如果它已停止则重新开始。
我在 Android 中有一个自定义视图,它使用了 AnimationDrawable。如果我在我的视图中调用了 AnimationDrawable.start(),并且我在没有调用 stop() 的情况下将应用程序推送到后台,是否会在后台耗尽系统资源?
如果是,我应该如何检测 "view" 到 foreground/background ?我试图避免将代码拆分为 activity,因为我希望自定义视图能够自给自足地处理它自己的生命周期。
编辑:请注意,我知道 Activity.onPause 和 onResume 调用可以帮助我,但我不希望我的自定义视图的使用者为生命周期方法编码 - 我希望我的自定义视图采用照顾好自己。
可以肯定的是,您可以通过覆盖其 onPause()
和 onResume()
来检测 activity 何时进入 foreground/background,如下所示:
@Override
protected void onPause() {
AnimationDrawable.stop();
}
@Override
protected void onResume() {
AnimationDrawable.start();
}
如果您想管理 "App going to background" 状态,您有时需要 Activity(或片段)。
我将向自定义视图添加两种方法:
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();
}
要让视图自行处理,覆盖 onDetachedFromWindow()
并停止其中的动画。您可以检查它是否在 onDraw
内动画,如果它已停止则重新开始。