如何找出Android logcat消息“跳过n帧。主线程工作太多”的原因
Posted
技术标签:
【中文标题】如何找出Android logcat消息“跳过n帧。主线程工作太多”的原因【英文标题】:How to find out the cause of Android logcat message "Skipped n frames. Too much work on main thread" 【发布时间】:2013-08-19 07:30:11 【问题描述】:我正在开发一个具有大量图像处理功能的 android 应用程序,logcat 经常向我显示"Skipped n frames...."
消息。
问题是“如何追踪这些消息的原因?”。我确实理解它的含义(即创建 AsyncTasks 等),我只需要找出导致它的代码的哪一部分。
有没有办法在 Eclipse ADT 上执行此操作? (可能是某些 Web 框架中的数据库分析器之类的东西)
【问题讨论】:
你需要使用AsyncTask 一个简单的建议是,确保在后台线程上处理任何不必依赖用户交互的操作。例如,如果您要缩放位图,则在另一个线程中进行,而不是在主 UI 线程中进行。 他在问如何追踪导致这个的代码部分...... @MT8 我已经知道了。我需要知道的是导致的部分。 哦,实际上由于您正在处理您提到的图像处理,处理大量图像会导致 ANR.. 所以有可能强制关闭或者您可以制作所有位图的缩略图跨度> 【参考方案1】:使用 Android SDK 中的跟踪工具:http://developer.android.com/tools/debugging/debugging-tracing.html
【讨论】:
谢谢你的回答,我试试看。关于使用 android tracer 跟踪我的问题(跳帧)的任何具体线索? 只在主 (UI) 线程中跟踪活动,您不应阻塞主线程超过大约 16 毫秒,越少越好。以上是关于如何找出Android logcat消息“跳过n帧。主线程工作太多”的原因的主要内容,如果未能解决你的问题,请参考以下文章
如何在致命信号 11 之后使用 logcat 中的输出来找出我在 android 本机代码中从哪里得到错误?
如何从 DDMS 中的 Android 可穿戴设备获取 logcat 消息/堆栈跟踪
如何使用 Android adb logcat 按标签名称排除某些消息?