在Android 15/16运行动画时,LogCat中关于帧率的日志异常大量地出现

移动开发 2026-07-10

我在运行的任何带有动画的应用的LogCat中,常看到如下情况。

setRequestedFrameRate frameRate=NaN, this=android.view.View   
setRequestedFrameRate frameRate=NaN, this=androidx.compose.ui.platform.AndroidComposeView

在测试设备有限的情况下,似乎只在Android 15/16版本以及三星设备上出现。我们正在使用最新版的Android Studio,手机也都更新到最新版本。

val fadeInAnimation = rememberInfiniteTransition()
val alpha by fadeInAnimation.animateFloat(
    initialValue = 0f,
    targetValue = 1f,
    animationSpec = infiniteRepeatable(
        animation = tween(durationMillis = 4000),
        repeatMode = RepeatMode.Restart
    ), label = ""
)

任何使用这类动画的东西似乎都会引发这个问题。还有谁遇到类似情况并解决了吗?

解决方案

你可以尝试在Logcat中过滤掉 View 标签。

我在三星设备上也看到同样的问题——我还没有去检查其他厂商。就我而言,一旦输入字段获得焦点,Logcat就会被 setRequestedFrameRate 信息淹没。

这也似乎已经在Android问题追踪器中被报道过,因此看起来像是平台/库层面的噪声,而不是由应用代码直接引起的。

一个实际的变通方法是降低 View 标签的日志级别:

adb shell setprop log.tag.View WARN
adb logcat -c

之后,重新启动Logcat。这样应该能在隐藏嘈杂的 setRequestedFrameRate 日志的同时,仍然显示来自 View 标签的警告和错误。

另外,如果你只想在Android Studio中进行过滤而不改变日志属性,可以使用如下的Logcat过滤条件,例如:

-message:setRequestedFrameRate

或者,如果消息始终位于 View 标签下:

-tag:View

这并不能修复底层的平台/库行为,但在调试时保持Logcat的可用性。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章