adb shell dumpsys window windows output describing

15,269

The explanation of the difference between mCurrentFocus and mFocusedApp stares right at you:

$ 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}}}

The mCurrentFocus is a Window (just a view which may or may not have an ActivityRecord associated with it)

The mFocusedApp is an AppWindowToken (an app Token which will always have an ActivityRecord)

So when input focus switches to a view with an activity - both mCurrentFocus and mFocusedApp would show the same activity. But sometimes focus switches to a view without an activity (like parts of SystemUI, etc) - then mCurrentFocus will be showing that view but mFocusedApp will still be showing the ActivityRecord of the app which had the focus before the last switch.

Share:
15,269
t3ft3l--i
Author by

t3ft3l--i

--i++;

Updated on June 16, 2022

Comments

  • t3ft3l--i
    t3ft3l--i almost 2 years

    I'm using appium for interaction between my Android device and java code. And I faced with problem that on some kind of devices(including emulators) after pressing on Home button, appium return incorrect current activity (it returns previous activity which is currently must be minimized). I found that appium used dumpsys window windows with grabbing mFocusedApp value for getting current app. I read another answers about getting Android current activities, and mostly it recommend to use:

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

    That was the source of the problem, because after pressing Home button mCurrentFocus and mFocusedApp linked to different activities. But I can't find any explanation the difference between these fields. And why appium uses only mFocusedApp for it?