Context
- 所有Thread正常运行,没有锁的阻塞,没有死循环. (debug时,直接计suspend thread,查看栈的调用情况)
- 根据Trace文件分析 CPU资源上,当前APP的线程中 主线程3%左右
- 按back键,系统无法响应ANR
- 最关键是主UI没有卡顿, ANR后显示是native状态. debug识图Thread中是RUNNING状态.方法栈在中nativePollOnce.
情景
- 相机类型APP,为提高速度,一个周期为 50~60ms
- 为了统计处理时间, 显示图像处理耗时
验证
- anr后的trace文件 (看Thread的信息,CPU的使用情况)
- Profiler,(CPU栏: 看Thread的调用,Memory栏 看对象的创建,当前状态)
最后原因
是在子线程 textView.setText("Test")
调用频繁导致的. 设置间隔为50ms左右.
拓展
以前,Android如果子线程操作UI是直接崩溃的啊!郁闷死我了,我看看StrictMode是不是可以杜绝