0

我正在努力解决我认为这里操作系统中的一个巨大错误。这就是我想要做的。

我在视图上有一个带有简单无限 AnimatorSet 动画的活动:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially" >
    <objectAnimator
        android:duration="1000"
        android:propertyName="alpha"
        android:repeatCount="infinite"
        android:repeatMode="reverse"
        android:valueFrom="0.3"
        android:valueTo="1.0" />
</set>

这个动画基本上是按顺序淡入淡出视图。动画作品。

在活动的onDestroy() 方法中,我使用animation.end() 结束动画。

发生的情况是,即使活动被销毁,应用程序的进程仍然使用处理器时间

进程列表

这是没有意义的,因为活动已关闭。

我一次又一次地对此进行了测试,并删除了 AnimatorSet 解决了这个问题。

我还尝试了几种不同的方法来删除 AnimatorSet:animation.end()、animation.cancel()、animation = null

你们有什么感想 ?

4

1 回答 1

0

看来我用错了:

我做了什么 :

onCreate(){
    animation = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.animation);
    animation.setTarget(myView);
    animation.start();
}

onDestroy(){
    if(animation != null){
        animation.cancel();
    }
}

onPause(){
    if(animation != null){
        animation.end();
    }
}

onResume(){
    if(animation != null){
        animation.start();
    }
}

什么解决了这个问题:

onCreate(){
    animation = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.animation);
    animation.setTarget(myView);
    animation.start();
}

onDestroy(){
    if(animation != null){
        animation.cancel();
    }
}

onPause(){
    if(animation != null && animation.isStarted()){
        animation.end();
    }
}

onResume(){
    if(animation != null && !animation.isStarted()){
        animation.start();
    }
}
于 2013-11-11T18:16:14.617 回答