微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > monkey测试 com.android.quicksearchbox 模块,出现 android.view.WindowManager$B...

monkey测试 com.android.quicksearchbox 模块,出现 android.view.WindowManager$B...

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]

monkey测试com.android.quicksearchbox (快速搜索)模块时,会遇到类似这样的Exception:
// CRASH: com.android.quicksearchbox (pid 1267)
// Short Msg: android.view.WindowManager$BadTokenException
// Long Msg: android.view.WindowManager$BadTokenException: Unable to add window --
token null is not valid; is your activity running?
// android.view.WindowManager$BadTokenException: Unable to add window -- token null is
not valid; is your activity running?
// at android.view.ViewrootImpl.setView(ViewRootImpl.java:646)
// at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
// at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
// at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:660)
// at com.android.internal.policy.impl.PhoneWindow.onKeyUpPanel(PhoneWindow.java:869)
// at com.android.internal.policy.impl.PhoneWindow.onKeyUp(PhoneWindow.java:1542)
// at
com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.jav
a:1878)
// at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:4118)
// at android.view.ViewRootImpl.deliverKeyEvent(ViewRootImpl.java:4036)
// at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3526)
// at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4783)
// at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4743)
// at
android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4895)
// at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
// at android.os.MessageQueue.nativePollOnce(Native Method)
// at android.os.MessageQueue.next(MessageQueue.java:128)
// at android.os.Looper.loop(Looper.java:151)
// at android.app.ActivityThread.main(ActivityThread.java:5371)
// at java.lang.reflect.Method.invokeNative(Native Method)
// at java.lang.reflect.Method.invoke(Method.java:525)
// at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
// at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
// at dalvik.system.NativeStart.main(Native Method

[SOLUTION]

这是monkey issue,由monkey的测试机制导致。
Quicksearchbox 这个app从操作行为上来说,可以通过key event在下拉列表菜单中选中并切换
search activity,同时又可以通过key event(KEYCODE=82 MENU KEY)来叫起Menu popup window。
当这些key event不做任何判断、被随机发送给quick search box app时,如果恰好search
activity A叫起了menu popup window,然后又马上切换到search activity B,就会因为activity
A已经死掉,所以add menu popup window时就会因为找不到target activity而报出这样的JE。鉴于
monkey test的测试流程,会跳开php?mod=tag&id=6090" target="_blank" class="relatedlink">Framework input event的处理流程,不对activity的状态做任何
判断,就统统把key event直接发送给CLIent端的activity,导致无法处理而报JE的结果。而正常操
作流程下,所有的Keyeven都会走framework input这一路,那么framework就会有机制对activity状
态做判断,然后才决定key event何去何从。
由于monkey test所走流程是跳开了framework input 这一路的判断和处理,所以这种问题内部建议
不需要解决。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top