导言:
项目中碰到ANR很正常,要是碰到了,也很开心,表明你的代码还不够优秀,仍需继续努力,而这片日记只是工作中碰到的一个,在这里只是解决ANR的思路,不做什么什么的分析原理,工作中更多的是发现问题和快速解决问题,而不是什么原理,这个只能当做是知识的深入,但是要适可而止,是不是!

ANR日志
这是使用bugly拦截的ANR事件,有时候会更显眼,更容易找到问题之所在


Input dispatching timed out
ANR Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. waitqueue length = 13, head.seq = 13091050, Wait queue head age: 5609.2ms.)

1 com.amap.api.mapcore.util.r.a(Unknown Source:0)
2 com.amap.api.mapcore.util.c.addPolyline(AMapDelegateImp.java:3889)
3 com.amap.api.maps.AMap.addPolyline(AMap.java:718)
4 ...view.activity.VehicleInfoActivity.drawAllLine(VehicleInfoActivity.java:885)
5 ...view.activity.VehicleInfoActivity.onEvent(VehicleInfoActivity.java:432)
6 java.lang.reflect.Method.invoke(Native Method)
7 org.greenrobot.eventbus.EventBus.invokeSubscriber(EventBus.java:485)
8 org.greenrobot.eventbus.EventBus.postToSubscription(EventBus.java:420)
9 org.greenrobot.eventbus.EventBus.postSingleEventForEventType(EventBus.java:397)
10 org.greenrobot.eventbus.EventBus.postSingleEvent(EventBus.java:370)
11 org.greenrobot.eventbus.EventBus.post(EventBus.java:251)
12 ...view.fragment.VehicleLocationFragment.processData(VehicleLocationFragment.java:310)
13 ...view.fragment.VehicleLocationFragment.carHistoryTrackSuccess(VehicleLocationFragment.java:1009)
14 ...presenter.fragment.VehicleLocationFragmentPresenter$1.onResponseSuccess(VehicleLocationFragmentPresenter.java:32)
15 ...network.helper.BaseCallBack.onResponse(BaseCallBack.java:47)
16 ...network.helper.BaseCallBack.onNext(BaseCallBack.java:36)

场景:
1:界面
activityA和fragmentX,fragmentY,fragmentZ,activityA上面是数据显示区,中间是tablayout+viewPaper,下面是滑动时对应的
fragment数据显示区
2:技术
滑动到fragmentX可见时请求后台数据并显示数据在自己的fragment内,滑动到fragmentY,fragmentZ同fragmentX,还有滑动到相应
fragment时获取数据并将数据通过Eventbus或者接口方式传递给activityA,接收并在上面数据显示区处理并更新显示对应数据

解决:
1:出现问题,首当其冲百度搜一下,有找到解决方案最好,没有还得自己老实找
2:出现ANR时要多复现几次,有时候抓取的信息较难定位,只要多复现,才能更快定位
3:知道什么地方出现问题,但是代码又太多,很难定位,就通过注释的方式去定位
4:发现位置是根本,找到后就知道问题了,就是由于这段代码耗时了,通过异步搞定即可

更多推荐

Input dispatching timed out ANR问题分析