在Android 15/16运行动画时,LogCat中关于帧率的日志异常大量地出现
我在运行的任何带有动画的应用的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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。