6


पर 'डाउन' कुंजी प्रेषण पर "विंडो प्रबंधक क्रैश" Instrumentation का उपयोग करके मैं विभिन्न एंड्रॉइड उपकरणों पर अपना यूनिट परीक्षण चला रहा हूं। टेस्टकेस सैमसंग गैलेक्सी एस को छोड़कर सभी उपकरणों को एमुलेटर & पर ठीक काम करता है।सैमसंग गैलेक्सी एस

D/dalvikvm(11862): GC_EXPLICIT freed 6800 objects/374040 bytes in 54ms 
D/dalvikvm(11862): GC_EXPLICIT freed 780 objects/71856 bytes in 39ms 
W/dalvikvm(11862): threadid=9: thread exiting with uncaught exception (group=0x4001d7d0) 
E/WindowManager(2472): Window Manager Crash 
E/WindowManager(2472): java.lang.NullPointerException 
E/WindowManager(2472):   at com.android.server.WindowManagerService$KeyWaiter.waitForNextEventTarget(WindowManagerService.java:5844) 
E/WindowManager(2472):   at com.android.server.WindowManagerService.injectKeyEvent(WindowManagerService.java:5565) 
E/WindowManager(2472):   at android.view.IWindowManager$Stub.onTransact(IWindowManager.java:110) 
E/WindowManager(2472):   at com.android.server.WindowManagerService.onTransact(WindowManagerService.java:692) 
E/WindowManager(2472):   at android.os.Binder.execTransact(Binder.java:288) 
E/WindowManager(2472):   at dalvik.system.NativeStart.run(Native Method) 
E/AndroidRuntime(11862): FATAL EXCEPTION: Instr: com.myapp.test.ImpInstrumentation 
E/AndroidRuntime(11862): java.lang.NullPointerException 
E/AndroidRuntime(11862):  at android.os.Parcel.readException(Parcel.java:1266) 
E/AndroidRuntime(11862):  at android.os.Parcel.readException(Parcel.java:1248) 
E/AndroidRuntime(11862):  at android.view.IWindowManager$Stub$Proxy.injectKeyEvent(IWindowManager.java:830) 
E/AndroidRuntime(11862):  at android.app.Instrumentation.sendKeySync(Instrumentation.java:859) 
E/AndroidRuntime(11862):  at android.app.Instrumentation.sendKeyDownUpSync(Instrumentation.java:872) 
E/AndroidRuntime(11862):  at com.myapp.test.util.ListUtil.<b>arrowDownToPosition</b>(ListUtil.java:69) 

यहाँ और कोड का टुकड़ा है, जहां यह आम तौर पर दुर्घटनाओं है:

Samsung Galaxy S पर यह लगभग 30 महत्वपूर्ण घटनाओं इंजेक्शन यहाँ उपकरण का उपयोग कर पूरा क्रैश लॉग है के बाद एक विंडो प्रबंधक दुर्घटना को प्रदर्शित करता है
private void arrowDownToPosition(int position) { 
      int maxDowns = 50; 
     while(mListView.getSelectedItemPosition() < position && --maxDowns > 0) { 
      mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN); 
     } 

//Crashes on below line dispatching enter key 
     mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER); 
    } 

सभी समाधान/सुझाव स्वागत है।

+0

एंड्रॉइड का कौन सा संस्करण? –

+0

एंड्रॉइड 2.2ReubenScratton 2.2 – 100rabh

+1

परेशान है कि आपका स्टैक ट्रेस 2.2.x स्रोत पेड़ों में से किसी के साथ लाइन नहीं है। संभवतः सैमसंग ने इसे अनुकूलित किया। –

उत्तर

-1

आपके स्टैकट्रैक के अनुसार ऐसा लगता है कि आपका चर mInstrumentation शून्य है। क्या आप इसे शुरू करना भूल गए?

इस प्रयास करें:

while(mInstrumentation!=null && mListView.getSelectedItemPosition()>-1) { 
    mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN); 
} 
+1

ऐसा नहीं है। 'mInstrumentation' स्पष्ट रूप से शुरू किया गया है क्योंकि स्टैक ट्रेस 'sendKeyDownUpSync' विधि के बच्चे के अंदर से उत्पन्न अपवाद दिखाता है। –

0

सुनिश्चित नहीं हैं कि अगर यह मदद करता है, लेकिन जब तक कुछ समय के लिए इस मुद्दे पर शोध, मैं इस source पाया। विशेष रूप से लाइन 175 से गैलेक्सी एस पर DPAD_CENTER के साथ एक बग के बारे में एक नज़र डालें, और समस्या का समाधान कैसे किया जाता है।

+0

संकेत के लिए धन्यवाद, मुझे केवल 'ListView' में समस्या का सामना करना पड़ रहा है। मेरे पास 'ListView' में' KEYPAD_DOWN' के अलावा 'ListView' में किसी विशेष स्थिति में जाने के लिए कोई वैकल्पिक विधि नहीं है। – 100rabh

+0

आह मैं समझता हूं, मैं देखता रहूंगा। –

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