android-notes / Cockroach

降低Android非必要crash
MIT License
3.25k stars 448 forks source link

ANR_EXCEPTION #4

Closed cikichen closed 7 years ago

cikichen commented 7 years ago

install方法里面的Looper.loop();会导致这个问题

android-notes commented 7 years ago

什么情况下发生ANR,有日志吗

cikichen commented 7 years ago

没有日志,没有uninstall,只在application的oncreate里面install了

android-notes commented 7 years ago

必现吗,有没有使用bugly等第三方sdk,有没有设置过Thread.setDefaultUnCatchExceptionHandler

cikichen commented 7 years ago

@android-notes 出现很多吧,没有使用第三方sdk,没有设置Thread.setDefaultUnCatchExceptionHandler

android-notes commented 7 years ago

可以把你的代码或者demo发给我看一下吗?app弹框提示ANR还是没弹,但没法点击等操作而且屏幕上什么都没显示。是不是你在activity初始化时抛出了异常

cikichen commented 7 years ago

@android-notes 现象不明,后台监测到的

android-notes commented 7 years ago

怎么监测到的,用什么监测的

android-notes commented 7 years ago

是不是为Looper设置了setMessageLogging ,并在Printer的println方法中监测的anr?

cikichen commented 7 years ago

@android-notes 没有

xiaomaguoguo commented 7 years ago

没用第三方,那就是说不同的rom会有不同的反应吧。。 ?

android-notes commented 7 years ago

理论上基本不会存在兼容问题,怎么监测到的ANR,用什么监测的,可不可以说清楚点

android-notes commented 7 years ago

这不是ANR,是由于activity初始化抛出了异常,导致activity生命周期没有执行完整,所以导致了什么都不显示,其实这时主线程是没有被阻塞的,你如果在activity的onCreate中new Handler().post(runnable),并在Runnable的run中调用mObj的任意方法的话就不会出现什么都不显示了,Cockroach一般可以用在listview或recyclerview等这类延时加载view的控件中,当这些控件的adapter中抛出异常时,只是导致后面的ui不显示,但已经显示的控件的点击等还是可以响应的。activity crash大部分是由于服务端返回数据后导致的,这时activity通常已经初始化完成,那么这时如果抛出了异常只会导致ui不显示,其他的ui比如标题栏等还是可以正常显示的 @zengd0