Compose每秒更新屏幕触发OpenGLRenderer Davey异常日志排查
问题解决:Jetpack Compose 计时更新导致 OpenGLRenderer 异常日志刷屏
一、代码实现优化
你的代码功能正常,但可以改用更贴合Compose最佳实践的方式实现,既简化代码也能避免潜在的重组冗余:
使用produceState替代手动组合LaunchedEffect与mutableIntState,它是Compose专为协程生成状态设计的API,逻辑更清晰:
@Composable fun timerUpdate(delayTime: Duration = 1.seconds): Int { return produceState(initialValue = 0) { while (true) { delay(delayTime) value++ } }.value } @Composable fun Greeting() { Text(text = timerUpdate().toString()) }
二、禁用异常日志的方法
如果优化后日志仍存在,可通过以下方式屏蔽这条刷屏日志:
1. adb 命令过滤
在终端执行日志命令时,直接排除OpenGLRenderer标签的输出:
adb logcat -s *:V -OpenGLRenderer:S
-OpenGLRenderer:S表示将该标签的日志级别设为静默,不再输出。
2. Android Studio Logcat 过滤
在Android Studio的Logcat面板中添加自定义过滤规则:
- 点击右上角「Edit Filter Configuration」
- 在「Log Tag」输入框填入正则表达式
^((?!OpenGLRenderer).)*$,匹配不包含该标签的日志 - 保存规则后即可屏蔽对应日志
3. 设备开发者选项调整
进入设备「开发者选项」,找到「OpenGL调试」相关开关关闭冗余日志;或调整「日志记录器缓冲区大小」,降低全局日志输出量。
内容的提问来源于stack exchange,提问作者Maxim Akristiniy
相关产品推荐
相关产品推荐

