adb shell dumpsys窗口窗口输出描述

时间:2016-09-28 19:36:26

标签: android adb appium android-shell dumpsys

我正在使用appuim进行Android设备和java代码之间的互动。我遇到问题,在按下Home按钮后某些设备(包括模拟器)上,appium返回不正确的当前活动(它返回当前必须最小化的previuos活动)。我发现appium使用dumpsys window windows获取mFocusedApp值来获取当前应用。我阅读another answers关于获取Android当前活动的信息,并且大多数建议使用:

adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'"

这是问题的根源,因为按下主页按钮mCurrentFocusmFocusedApp链接到不同的活动。但我找不到任何解释这些领域之间的区别。为什么appuim只使用mFocusedApp呢?

1 个答案:

答案 0 :(得分:6)

mCurrentFocusmFocusedApp之间的差异的解释盯着你:

$ 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(只是一个view,可能会或可能没有ActivityRecord与之关联)

mFocusedAppAppWindowTokenapp Token,总是有ActivityRecord

因此,当输入焦点切换到view activity时,mCurrentFocusmFocusedApp都会显示相同的activity。但有时焦点会切换到view而没有activity(类似于SystemUI的部分等) - 然后mCurrentFocus会显示viewmFocusedApp仍会在最后一次切换之前显示焦点ActivityRecord的{​​{1}}。