7

我正在使用appium在我的 Android 设备和 java 代码之间进行交互。我遇到的问题是,在某些设备(包括模拟器)上按下 Home 按钮后,appium 返回不正确的当前活动(它返回当前必须最小化的先前活动)。我发现 appium 用于dumpsys window windows 获取mFocusedApp当前应用程序的价值。我阅读了有关获取 Android 当前活动的另一个答案,主要推荐使用:

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

那是问题的根源,因为在按下 Home 按钮mCurrentFocusmFocusedApp链接到不同的活动之后。但我找不到任何解释这些字段之间的区别。为什么 appium 只mFocusedApp用于它?

4

1 回答 1

9

和盯着你的区别的解释:mCurrentFocusmFocusedApp

$ dumpsys 窗口窗口 | grep -E 'mCurrentFocus|mFocusedApp'
    mCurrentFocus=窗口{X uX 包/.activity}
    mFocusedApp= AppWindowToken {X token=Token{X ActivityRecord{X uX package/.activity tX}}}

mCurrentFocus是一个Window(只是一个view可能有也可能没有ActivityRecord关联的)

mFocusedApp一个AppWindowToken(一个app Token总是有一个ActivityRecord

因此,当输入焦点切换到view带有 an activity-both的 a 时mCurrentFocusmFocusedApp会显示相同的内容activity。但有时焦点切换到view没有activity(如 SystemUI 的部分等)的焦点 - 然后mCurrentFocus会显示,viewmFocusedApp仍会显示ActivityRecordapp最后一次切换之前具有焦点的焦点。

于 2016-09-29T15:20:18.483 回答