6


Estoy ejecutando mis pruebas de Unidad en varios dispositivos Android usando Instrumentation. Testcases funciona bien en el emulador & todos los dispositivos, excepto Samsung Galaxy S. El Samsung Galaxy S Muestra un accidente Gestor Window después de la inyección de unos 30 eventos clave utilizando instrumentación aquí está el registro de bloqueo completo:"Window Manager Crash" al enviar la tecla "Abajo" en Samsung Galaxy S

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) 

Y aquí está la pieza de código, donde por lo general se estrella:

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); 
    } 

Todas las soluciones/sugerencias son bienvenidas.

+0

¿Qué versión de Android? –

+0

@ReubenScratton en Android 2.2 – 100rabh

+1

Molesto que su rastro de pila no se alinea con ninguno de los árboles fuente 2.2.x. Es de suponer que Samsung lo personalizó. –

Respuesta

-1

de acuerdo con su stacktrace parece que su variable mInstrumentation es nula. ¿Olvidaste inicializarlo?

probar esto:

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

No, no lo es. 'Instrumentación 'se ha inicializado claramente porque el seguimiento de pila muestra la excepción que se origina desde adentro de un elemento secundario del método' sendKeyDownUpSync '. –

0

No estoy seguro si esto ayuda, pero mientras que la investigación brevemente este tema, he encontrado este source. Eche un vistazo, particularmente desde la línea 175, sobre un error con DPAD_CENTER en el Galaxy S, y cómo se resuelve el problema.

+0

gracias por la sugerencia de que estoy enfrentando el problema en 'ListView' solamente. No tengo ningún método alternativo para moverme a una posición particular en 'ListView' además de' KEYPAD_DOWN' en ese 'ListView'. – 100rabh

+0

Ahh Entiendo, seguiré buscando. –

Cuestiones relacionadas