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了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM