6


Tôi đang chạy thử nghiệm Đơn vị của mình trên các thiết bị Android khác nhau sử dụng Instrumentation. Testcases hoạt động tốt trên trình mô phỏng & tất cả các thiết bị ngoại trừ Samsung Galaxy S. On Samsung Galaxy S nó sẽ hiển thị một quản lý tai nạn Window sau khi tiêm khoảng 30 sự kiện chính sử dụng thiết bị đo đạc ở đây là hoàn thành nhật ký sự cố:"Window Manager Crash" khi gửi phím 'Xuống' trên 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) 

Và đây là đoạn mã mà nó thường bị treo:

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

Mọi giải pháp/đề xuất đều được chào đón.

+0

Phiên bản Android nào? –

+0

@ReubenScratton trên Android 2.2 – 100rabh

+1

Làm phiền rằng dấu vết ngăn xếp của bạn không phù hợp với bất kỳ cây nguồn 2.2.x nào. Có lẽ Samsung đã tùy chỉnh nó. –

Trả lời

-1

theo stacktrace của bạn có vẻ như biến số mInstrumentation của bạn là không. bạn đã quên khởi tạo nó chưa?

thử điều này:

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

Không phải là không. 'mInstrumentation' rõ ràng đã được khởi tạo vì dấu vết ngăn xếp cho thấy ngoại lệ bắt nguồn từ bên trong một con của phương thức 'sendKeyDownUpSync'. –

0

Không chắc chắn nếu điều này giúp, nhưng khi nghiên cứu một thời gian ngắn quyết vấn đề này, tôi thấy source này. Có một cái nhìn, đặc biệt là từ dòng 175 về một lỗi với DPAD_CENTER trên Galaxy S, và làm thế nào vấn đề được giải quyết.

+0

cảm ơn cho gợi ý Tôi đang đối mặt với vấn đề trong 'ListView' chỉ. Tôi không có bất kỳ phương pháp thay thế nào để di chuyển đến một vị trí cụ thể trong 'ListView' bên cạnh' KEYPAD_DOWN' trên 'ListView' đó. – 100rabh

+0

Ahh Tôi hiểu, tôi sẽ tiếp tục tìm kiếm. –

Các vấn đề liên quan