You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 15/16运行动画时LogCat出现大量帧率NaN日志求助

三星Android 15/16上Compose无限动画触发setRequestedFrameRate frameRate=NaN日志的解决办法

不少开发者都碰到过这个问题——在三星Android 15/16设备上,只要用Compose的rememberInfiniteTransition实现无限重复动画,LogCat就会频繁打印setRequestedFrameRate frameRate=NaN的日志,其他设备和系统版本则无此现象。本质是三星系统与Compose帧率请求逻辑的兼容性bug:当无限动画未明确指定帧率参数时,系统计算帧率时生成了NaN值,进而输出该警告。

有效的解决方式

  • 升级Jetpack Compose到最新稳定版
    Google在Compose 1.6.x及后续版本中修复了向View传递帧率参数时产生NaN的问题,升级后基本能直接消除这个日志。

  • 给动画强制指定帧率
    如果暂时无法升级Compose版本,可以在动画的infiniteRepeatable配置中添加frameRate参数,固定帧率数值,避免系统计算出错:

    val fadeInAnimation = rememberInfiniteTransition()
    val alpha by fadeInAnimation.animateFloat(
        initialValue = 0f,
        targetValue = 1f,
        animationSpec = infiniteRepeatable(
            animation = tween(durationMillis = 4000),
            repeatMode = RepeatMode.Restart,
            frameRate = FrameRate(60) // 指定固定60帧/秒
        ), label = ""
    )
    
  • 用户侧临时规避方案
    引导用户进入设备「设置-显示-运动平滑度」,关闭自适应帧率并切换为固定60Hz,也能屏蔽该日志,但此操作需要用户手动完成,无法在应用层面控制。

需要注意:该日志仅为系统警告,不会影响动画的实际运行效果,主要是干扰LogCat的日志排查流程。

内容的提问来源于stack exchange,提问作者Andy Donnelly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:22:34