Android开发中碰到的一个ANR问题。

这是一个点击之后反应超时的ANR

[2018/1/12 10:25:21] 01-12 10:24:57.343   337  1279 D ActivityManager: Delay resumeKeyDispatchingLocked() to avoid deadlock.
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager: ANR in com.android.settings (com.android.settings/.LanguageSettings), time=1484121
[2018/1/12 10:25:21] ng up.)   // Reason漏了
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager: Load: 21.75 / 22.85 / 18.3
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager: Android time :[2018-01-12 10:24:57.27] [1490.278]
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager: CPU usage from 13170ms to 0ms ago:
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   106% 1609/com.**********.services: 20% user + 86% kernel / faults: 1096 minor 12 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   30% 337/system_server: 15% user + 14% kernel / faults: 4909 minor 75 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   24% 1215/android.process.media: 22% user + 1.8% kernel / faults: 4203 minor 44 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   12% 146/surfaceflinger: 6.8% user + 6.1% kernel / faults: 246 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   11% 4057/com.android.settings: 9.3% user + 2.4% kernel / faults: 5423 minor 19 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   8.9% 1965/com.**********.voiceassistant: 7.4% user + 1.5% kernel / faults: 4531 minor 96 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   4% 1822/ksdioirqd/mmc1: 0% user + 4% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   3.4% 106/logd: 1.8% user + 1.5% kernel / faults: 17 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   2.7% 45/kswapd0: 0% user + 2.7% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   2.1% 1564/com.*********.settings<1> (1)[1971:RadioServiceThr]i2c ioctl, cmd=0x707, arg=0xa2e1d490
[2018/1/12 10:25:21] : 1.4% user + 0.7% kernel / faults: 1118 minor 2 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   1.9% 72/mmcqd/0: 0% user + 1.9% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   1.6% 2218/com.android.phone: 0.9% user + 0.6% kernel / faults: 794 minor 33 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   1.5% 964/com.android.systemui: 1.2% user + 0.3% kernel / faults: 2244 minor 14 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   1.4% 1888/com.*********.carplay: 0.8% user + 0.6% kernel / faults: 382 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   1.2% 128/outhw_thread: 0% user + 1.2% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   1.2% 3850/com.**********.radio_v2: 0.9% user + 0.3% kernel / faults: 3010 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   1% 151/mediaserver: 0.6% user + 0.3% kernel / faults: 197 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.9% 183/mnld: 0.8% user + 0% kernel / faults: 101 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.5% 1824/stp_sdio_tx_rx: 0% user + 0.5% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.4% 7/rcu_preempt: 0% user + 0.4% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.3% 131/pb_stream_threa: 0% user + 0.3% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.3% 141/zygote: 0% user + 0.2% kernel / faults: 2627 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.3% 144/servicemanager: 0% user + 0.2% kernel / faults: 11 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.2% 1867/com.**********.avm.t3plus: 0.1% user + 0% kernel / faults: 637 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.2% 2320/kworker/1:2: 0% user + 0.2% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.2% 2396/kworker/u8:0: 0% user + 0.2% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.2% 2967/wpa_supplicant: 0.1% user + 0% kernel / faults: 107 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.2% 3918/kworker/u8:4: 0% user + 0.2% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 122/Audin1AU: 0% user + 0.1% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 133/HDMIRxTask Thre: 0% user + 0.1% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 1301/com.gislocation.android.service: 0% user + 0% kernel / faults: 871 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 1638/app_process: 0% user + 0% kernel / faults: 87 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 1951/com.**********.carassistant: 0% user + 0% kernel / faults: 607 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 2301/com.************.btservice: 0% user + 0% kernel / faults: 737 minor 10 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 2818/kworker/u8:1: 0% user + 0.1% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 2963/hif_thread: 0% user + 0.1% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 3298/com.**********.music: 0% user + 0% kernel / faults: 712 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 3847/kworker/3:0: 0% user + 0.1% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 3875/kworker/0:0: 0% user + 0.1% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0.1% 3876/kworker/2:1: 0% user + 0.1% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 1//init: 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 10/migration/0: 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 93/jbd2/mmcblk0p27: 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 121/AudEsm: 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 123/Audin2AU: 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager   0% 13/HDMIRxCbusLink : 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 135/HDMIRxCbusCmd T: 0% user + 0% kerne<1> (1)[1971:RadioServiceThr]i2c ioctl, cmd=0x707, arg=0xa2e1d470
[2018/1/12 10:25:21] l
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 186/mtk_stp_psm: 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 1592/com.android.inputmethod.latin: 0% user + 0% kernel / faults: 477 minor 1 major
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 1651/com.*********.carcameras: 0% user + 0% kernel / faults: 629 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 1925/com.********.bluetooth: 0% user + 0% kernel / faults: 426 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 1982/com.android.defcontainer: 0% user + 0% kernel / faults: 468 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 2223/com.**********.quickbootmanager: 0% user + 0% kernel / faults: 1641 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 2252/com.**********.gallery: 0% user + 0% kernel / faults: 443 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 2962/tx_thread: 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 3334/com.********.filemanager: 0% user + 0% kernel / faults: 443 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 3596/com.android.externalstorage: 0% user + 0% kernel / faults: 400 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:   0% 3609/android.process.media: 0% user + 0% kernel / faults: 565 minor
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager:  +0% 4124/android.process.acore: 0% user + 0% kernel
[2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager: 55% T     // Total漏了

初步判断是系统和服务占用资源太多,引起原生设置的ANR
在原生设置“语言和输入法”界面点击返回键是在10:24:52.563,原生设置是在10:24:52.723结束,公司设置是在10:24:57.238才收到onConfigurationChanged回调,快5秒了

                                     01-12 10:24:52.563        4057             ue to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x68, repeatCount=0, eventTime=1484133, downTime=1476062, deviceId=-1, source=0x101 }
                                     01-12 10:24:52.723  4057  4057 D ActivityThread: ACT-DESTROY_ACTIVITY handled : 1 / android.os.BinderProxy@5af997d
    Line 97217: [2018/1/12 10:25:20] 01-12 10:24:57.238  1564  1564 D RRIVI   : HomeActivity--TAGonConfigurationChanged 91 onConfigurationChanged com.roadrover.settings.ui.activity.HomeActivity@7c8a4d8
                [2018/1/12 10:25:21] 01-12 10:24:57.332  1564  1564 V ActivityThread: Performing resume of ActivityRecord{8570c4a token=android.os.BinderProxy@e0af7bb {com.roadrover.settings/com.roadrover.settings.ui.activity.HomeActivity}}
    Line 97346: [2018/1/12 10:25:21] 01-12 10:24:57.343   337   376 E ANRManager: ANR in com.android.settings (com.android.settings/.LanguageSettings), time=1484121
    Line 97692: [2018/1/12 10:25:21] 01-12 10:24:57.671  1564  1564 D RRIVI   : HomeActivity--TAGonCreate 84 onCreate com.roadrover.settings.ui.activity.HomeActivity@428a691
    Line 97906: [2018/1/12 10:25:21] 01-12 10:24:58.309  1564  1564 D RRIVI   : HomeActivity--TAGonResume 128 onResume com.roadrover.settings.ui.activity.HomeActivity@428a691

PS:ACT-DESTROY_ACTIVITY这个操作是在当前activity的onDestroy走了之后才会走得。

[一个ANR问题]

Application is not responding: AppWindowToken{2c381cd0 token=Token{2c38feb8 ActivityRecord{2c2ddce0 u0 com.*********.settings/.common.OptionTabHostActivity}}}.  It has been 8009.8ms since event, 8008.7ms since wait
started. Reason: Waiting because no window has focus but there is a focused application that may eventually add a window when it finishes starting up.
[10-19 141007 298]I/Process (  340): Sending signal. PID: 887 SIG: 3
[10-19 141007 303]I/dalvikvm(  887): threadid=3: reacting to signal 3
[10-19 141007 346]I/dalvikvm(  887): Wrote stack traces to '/data/anr/traces.txt'
[10-19 141007 361]E/ActivityManager(  340): ANR in com.roadrover.settings (com.roadrover.settings/.common.OptionTabHostActivity)
[10-19 141007 361]E/ActivityManager(  340): Reason: keyDispatchingTimedOut
[10-19 141007 361]E/ActivityManager(  340): Load: 23.33 / 22.43 / 19.7
[10-19 141007 362]E/ActivityManager(  340): CPU usage from 33210ms to 0ms ago:

经过分析,发现是可以明显看到,在开始创建窗口,到大约*秒后,系统已经开始分发事件了,此时已经发现没有目标窗口,系统此时已经提醒我们一次了,当然后边呢,目标窗口还是没有创建好,最终就导致ANR了。

可以知道是由于Activity没有顺利执行,刚开始是认为在Activity的onCreate执行失败,但是看了几遍发现onCreate里面没有耗时操作,后来过了几遍log,发现原来是Service里面得一个方法卡住了,导致阻塞了主线程,导致

Activity的onCreate无法顺利执行,而ANR了。

原文地址:https://www.cnblogs.com/lipeineng/p/8316088.html