2012-11-20 14 views
8

मेरी एंड्रॉयड logcat लॉग में इंतजार कर रहा है, मैं देख रहा हूँ:क्यों एंड्रॉयड व्यवहार करता है एक ऐप्लिकेशन जब यह looper

01-02 02:01:46.523 E/ActivityManager( 459): ANR in com.android.phone (com.android.phone/.InCallScreen) 

और फिर जब मैं /data/anr/traces.txt लिए जाते हैं, मैं देख रहा हूँ

Cmd line: com.android.phone 

DALVIK THREADS: 
(mutexes: tll=0 tsl=0 tscl=0 ghl=0) 

"main" prio=5 tid=1 NATIVE 
    | group="main" sCount=1 dsCount=0 obj=0x410f7508 self=0x40eeeb68 
    | sysTid=649 nice=0 sched=0/0 cgrp=apps handle=1075429168 
    | schedstat=(0 0 0) utm=1361 stm=314 core=1 
    #00 pc 0000dac0 /system/lib/libc.so (epoll_wait+12) 
    #01 pc 00014899 /system/lib/libutils.so (android::Looper::pollInner(int)+96) 
    #02 pc 00014b01 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+104) 
    #03 pc 00063aeb /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, int)+22) 
    #04 pc 0001df30 /system/lib/libdvm.so (dvmPlatformInvoke+112) 
    #05 pc 0004d1fb /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+394) 
    #06 pc 00038f4d /system/lib/libdvm.so (dvmCheckCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+8) 
    #07 pc 00000214 /dev/ashmem/dalvik-jit-code-cache (deleted) 
    at android.os.MessageQueue.nativePollOnce(Native Method) 
    at android.os.MessageQueue.next(MessageQueue.java:125) 
    at android.os.Looper.loop(Looper.java:124) 
    at android.app.ActivityThread.main(ActivityThread.java:4921) 
    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:1038) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
    at dalvik.system.NativeStart.main(Native Method) 

मेरा प्रश्न क्यों एंड्रॉयड सोचता है कि जब स्टैक ट्रेस Looper में मुख्य थ्रेड संदेश के लिए इंतज़ार कर पता चलता एप्लिकेशन ANR में है? यह मेरे लिए सामान्य लगता है। मैं समझता हूं कि एंड्रॉइड एएनआर दिखाता है जब मुख्य धागा कुछ डाउनलोड कर रहा है/एक लंबा ऑपरेशन कर रहा है। लेकिन ऐसा लगता है कि यह एक संदेश की प्रतीक्षा कर रहा है। अगर मैं गलत हूं तो कृपया मुझे बताएं।

उत्तर

2

मैं इस दिलचस्प बग रिपोर्ट मिल गया है:

http://code.google.com/p/android/issues/detail?id=41755

संक्षिप्त सारांश वहाँ NDK आवरण कोड जिसका अर्थ है कि कई स्रोतों से आ रही घटनाओं एक ANR पैदा कर सकता है में एक बग प्रतीत हो रहा है कि है। यह मेरे उपयोग के मामले से बिल्कुल मेल खाता है --- मेरे पास पृष्ठभूमि धागे और गेमपैड में होने वाले काम के साथ एक एनडीके ऐप है, और जिस एएनआर को मैं आपके द्वारा वर्णित एक से मेल खाता हूं और बग रिपोर्ट में से एक से मेल खाता हूं।

क्या यह आपके सेटअप के समान है?

अद्यतन: अधिक जानकारी: http://ps3computing.blogspot.co.uk/2012/12/anr-application-not-responding.html

के बाद ठीक अपने ब्लॉग पर वर्णित लागू किया, मैं प्रकट फिर ANR बनाने के लिए सक्षम होने के लिए नहीं है। यह कहना नहीं है कि यह चला गया है, हालांकि ...

संबंधित मुद्दे