![](/img/trans.png)
[英]adb shell dumpsys window windows output not showing mCurrentFocused
[英]adb shell dumpsys window windows output describing
我正在使用appium在我的 Android 设备和 java 代码之间进行交互。 而且我遇到的问题是,在某些设备(包括模拟器)上按下 Home 按钮后,appium 返回不正确的当前活动(它返回当前必须最小化的先前活动)。 我发现 appium 使用dumpsys window windows
并抓取mFocusedApp
值来获取当前应用程序。 我阅读了有关获取 Android 当前活动的另一个答案,主要推荐使用:
adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'"
这就是问题的根源,因为在按下 Home 按钮后mCurrentFocus
和mFocusedApp
链接到不同的活动。 但我找不到任何解释这些字段之间的区别。 为什么 appium 只使用mFocusedApp
呢?
mCurrentFocus
和mFocusedApp
之间差异的解释盯着你:
$ dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' mCurrentFocus=Window{X uX package/.activity} mFocusedApp=AppWindowToken{X token=Token{X ActivityRecord{X uX package/.activity tX}}}
mCurrentFocus
是一个Window
(只是一个可能有或没有与之关联的ActivityRecord
的view
)
mFocusedApp
是一个AppWindowToken
(一个app
Token
,它总是有一个ActivityRecord
)
因此,当输入焦点切换到具有activity
的view
时 - mCurrentFocus
和mFocusedApp
都会显示相同的activity
。 但有时焦点切换到没有activity
的view
(如SystemUI的部分等) - 然后mCurrentFocus
将显示该view
但mFocusedApp
仍将显示在最后一次切换之前具有焦点的app
的ActivityRecord
。
试试这个:对于 windows:
adb shell dumpsys window | find "mCurrentFocus"
对于 MAC:
adb shell dumpsys window | grep -E 'mCurrentFocus'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.