我有一个应用程序,它在 ViewPager 中的片段中有动画。我有 ViewPager 显示在列表片段的空选项上。动画是在 AnimatorSets 中组合的 NineOldAndroids ObjectAnimators,其中一些动画 SVG 使用 svg-android 显示。
当我在 ViewPager 上更改页面时,动画停止在片段中使用此代码:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
if (myAnimationView != null) {
myAnimationView.restartAnimation();
}
} else {
if (myAnimationView != null) {
myAnimationView.stopAnimation();
}
}
}
而View中的这段代码实现了ValueAnimator.AnimatorUpdateListener:
public void stopAnimation() {
endAnimCalled = true;
myAnimatorSet.end();
}
public void restartAnimation() {
endAnimCalled = false;
if (!myAnimatorSet.isStarted()) {
myAnimatorSet.start();
}
}
如果不在动画页面上按返回退出,应用程序即使在几个小时后也会使用 1-5% 的 CPU。如果在制作动画时在页面上按下返回,则应用在后台运行时会占用 10-30% 的 CPU。
有没有很好的方法可以通过 onPause 被调用的片段?任何想法为什么当动画停止时应用程序仍然使用 1-5% 的 CPU?
我发现这不可能在一个小到足以在 Stack Exchange 上发布的应用程序中复制。