首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

关于ANR报错的一个有关问题 Reason: keyDispatchingTimedOut

2013-12-15 
关于ANR报错的一个问题Reason: keyDispatchingTimedOut先把Log信息贴出来:E/ActivityManager(163): ANR in

关于ANR报错的一个问题 Reason: keyDispatchingTimedOut
先把Log信息贴出来:
E/ActivityManager(  163): ANR in com.hisense.mediacenter.filemanager (com.hisense.mediacenter.filemanager/.FMEntryActivity)
E/ActivityManager(  163): Reason: keyDispatchingTimedOut
E/ActivityManager(  163): Load: 4.63 / 4.58 / 4.7
E/ActivityManager(  163): CPU usage from 36480ms to 0ms ago:
E/ActivityManager(  163):   8.8% 16504/ntfs-3g: 3.1% user + 5.6% kernel / faults: 1 minor
E/ActivityManager(  163):   12% 1058/com.hisense.mediacenter.filemanager: 7.6% user + 4.4% kernel / faults: 1297 minor 1 major
E/ActivityManager(  163):   1.3% 254/com.amlogic.inputmethod.remote: 1.1% user + 0.1% kernel / faults: 681 minor 8 major
E/ActivityManager(  163):   0.6% 163/system_server: 0.4% user + 0.1% kernel / faults: 58 minor 1 major
E/ActivityManager(  163):   0.5% 321/com.jrm.tm.cpe: 0.3% user + 0.2% kernel / faults: 75 minor
E/ActivityManager(  163):   0.5% 76/surfaceflinger: 0.3% user + 0.1% kernel
E/ActivityManager(  163):   0.3% 31735/com.android.launcher: 0.2% user + 0.1% kernel / faults: 100 minor
E/ActivityManager(  163):   0.3% 87/adbd: 0% user + 0.3% kernel
E/ActivityManager(  163):   0.2% 56/kthread_hdmi: 0% user + 0.2% kernel
E/ActivityManager(  163):   0.1% 1597/logcat: 0% user + 0.1% kernel
E/ActivityManager(  163):   0.1% 5/events/0: 0% user + 0.1% kernel
E/ActivityManager(  163):   0% 52/kthread_di: 0% user + 0% kernel
E/ActivityManager(  163):   0% 16480/usb-storage: 0% user + 0% kernel
E/ActivityManager(  163):   0% 32709/com.hisense.systemupdate: 0% user + 0% kernel / faults: 4 minor
E/ActivityManager(  163):   0% 3/ksoftirqd/0: 0% user + 0% kernel
E/ActivityManager(  163):   0% 54/card_read_monit: 0% user + 0% kernel
E/ActivityManager(  163):   0% 60/mali/0: 0% user + 0% kernel
E/ActivityManager(  163):   0% 460/com.farcore.videoplayer: 0% user + 0% kernel
E/ActivityManager(  163):   0% 26941/com.android.weather: 0% user + 0% kernel
E/ActivityManager(  163): 30% TOTAL: 15% user + 14% kernel + 1.3% iowait + 0% irq + 0% softirq
E/ActivityManager(  163): CPU usage from 616ms to 1140ms later:
E/ActivityManager(  163):   67% 16504/ntfs-3g: 23% user + 44% kernel
E/ActivityManager(  163):   28% 1058/com.hisense.mediacenter.filemanager: 7.6% user + 21% kernel / faults: 5 minor
E/ActivityManager(  163):     25% 1058/ter.filemanager: 5.7% user + 19% kernel
E/ActivityManager(  163):     1.9% 1075/AsyncTask #1: 0% user + 1.9% kernel
E/ActivityManager(  163):   3.8% 163/system_server: 1.9% user + 1.9% kernel / faults: 2 minor
E/ActivityManager(  163):     5.7% 194/InputDispatcher: 1.9% user + 3.8% kernel
E/ActivityManager(  163):     1.9% 195/InputReader: 0% user + 1.9% kernel
E/ActivityManager(  163):   1.5% 31735/com.android.launcher: 1.5% user + 0% kernel / faults: 2 minor
E/ActivityManager(  163):     3.1% 31755/Thread-464: 3.1% user + 0% kernel
E/ActivityManager(  163): 100% TOTAL: 33% user + 66% kernel

/anr/Traces.txt 主要内容如下:

Cmd line: com.android.systemui

DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x40a46460 self=0x12818
  | sysTid=270 nice=0 sched=0/0 cgrp=default handle=1074083080
  | schedstat=( 1517282000 4299224000 619 ) utm=120 stm=31 core=0
  at android.os.MessageQueue.nativePollOnce(Native Method)
  at android.os.MessageQueue.next(MessageQueue.java:118)
  at android.os.Looper.loop(Looper.java:118)
  at android.app.ActivityThread.main(ActivityThread.java:4429)


  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:511)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
  at dalvik.system.NativeStart.main(Native Method)

问题描述:问题主要是文件夹内的文件搜索功能,在一个数据量特别大的文件内(500G)搜索某个文件,如果只输入一个字母就开始搜索,则会搜出包含该字母的所有文件(数量特别庞大),并且死机然后ANR报错。如果精确一点搜某个文件,也就是说,搜出的结果数量少的话就不会出现这种状况。
搜索功能实现用了AsyncTask异步处理类实现的。
现在就是搞不明白到底是什么原因,主线程阻塞?文件显示数据量庞大时应该分页显示?请大家帮我分析一下,初学安卓,才疏学浅啊!
[解决办法]
LZ是不是发错贴了,这是java区。不过ANR应该是数据量加载太大,按下一个键开始搜索,这时会加载很大的数据,如果这个时候没有加载完,再按下另一个键,这个时候在同一个处理线程中,所以得等待,这样就超过了android的响应时间,出现ANR异常,建议LZ可以适当的设置搜索词长,或者按键响应和加载处理分开不同的线程,但数据量大简单的搜索也不保证一定能行

热点排行