I am running Unit tests on various Android devices using Instrumentation . Tests work great on the emulator and on all devices except the Samsung Galaxy S. On Samsung Galaxy S, it displays a crash after entering several 30 key events using the toolkit - this is a complete crash log:
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)
And here is a piece of code where it usually crashes:
private void arrowDownToPosition(int position) { int maxDowns = 50; while(mListView.getSelectedItemPosition() < position && --maxDowns > 0) { mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN); }
All solutions / suggestions are welcome.
source share