由于 AnimatedVectorDrawableCompat 导致的 AppNotIdleException

问题描述 投票:0回答:1
android android-animation android-espresso android-vectordrawable
1个回答
2
投票

在我的例子中,这个问题是由设置为无限重复动画的

objectAnimator
引起的(
android:repeatCount="infinite"
)。

该问题也仅存在于较旧的平台版本上。测试在 Android 9 上完美运行,而问题在 Android 5 和 6 上重现(目前不确定 7 和 8)。

我相信,问题的根本原因与不确定的进度条相同(在此问题中涵盖)。但是,我还没有找到任何好的解决方案,只有解决方法。

解决方法之一是检测设置中动画已关闭(动画师持续时间为 0),并且不启动动画。当然,这只适用于动画不自动启动的平台版本。

private fun startIconAnimation(imageView: ImageView) {
    if (areAnimationsEnabled()) {
        (imageView.drawable as Animatable).start()
    }
}

private fun areAnimationsEnabled(): Boolean {
    val animatorDurationScale = Settings.Global.getFloat(
        requireContext().contentResolver,
        Settings.Global.ANIMATOR_DURATION_SCALE,
        1.0f
    )
    return animatorDurationScale != 0.0f
}

注意:API 级别 26 引入了静态方法

ValueAnimator.areAnimatorsEnabled()
,如果问题不仅仅发生在旧平台版本上,这会很方便。

© www.soinside.com 2019 - 2024. All rights reserved.