请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

MessageQueue的nativePollOnce导致ANR

老师您好,有个关于ANR的问题想请教一下您,我在分析trace文件时,发现有很多ANR的主线程堆栈是卡在MessageQueue的nativePollOnce中的,导致没办法继续优化。按我的理解,nativePollOnce方法是主线程空闲的时候会一直阻塞在这里,那为什么发生ANR时,主线程会是空闲状态呢?还有如果遇到这种问题,我们有什么办法可以找到发生ANR真实的点呢?希望老师提供个思路,不胜感激!

正在回答 回答被采纳积分+3

1回答

随风绽放 2019-05-17 11:08:58

同学你好,这种情况确实不好分析。但是我们的App发生了ANR,其实不一定是我们的App自身的问题,系统紧张的情况下也会导致我们的App偶现ANR

  1. 不能只关注trace信息

  2. 你看下trace中的cpu及io信息,以及其它的辅助信息

0 回复 有任何疑惑可以回复我~
  • 提问者 慕雪4289266 #1
    好的,还有老师,您在课程中有提到,IPC操作比较耗时,那ipc调用需要放在子线程中执行吗?
    回复 有任何疑惑可以回复我~ 2019-05-19 22:46:24
  • 随风绽放 回复 提问者 慕雪4289266 #2
    需要,并且IPC做缓存,比如getVersionName等
    回复 有任何疑惑可以回复我~ 2019-05-20 16:48:37
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号