2016-09-28 1 views
2

내 Android 장치와 Java 코드 간의 상호 작용에 appuim을 사용하고 있습니다. 그리고 홈 버튼을 누른 후 일종의 장치 (에뮬레이터 포함)에서 appium이 잘못된 현재 활동을 반환한다는 문제에 직면했습니다 (현재 최소화해야하는 활동을 반환 함). appium이 dumpsys window windows을 사용하여 현재 응용 프로그램을 가져 오는 데 mFocusedApp 값을 얻는 것을 발견했습니다. 나는 안드로이드 현재 활동을 얻기에 관하여 another answers을 읽고, 대부분이 사용하는 것이 좋습니다 : 때문에 다른 활동에 연결된 홈 버튼 mCurrentFocusmFocusedApp을 누른 후, 문제의 원인이었다adb 쉘 덤프 창 창 출력 설명

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

. 그러나 나는이 분야들 사이의 차이점을 전혀 설명 할 수 없다. 왜 appuim은 mFocusedApp 만 사용합니까?

+0

질문 * appuim이 'mFocusedApp' 만 사용하는 이유는 무엇입니까? * 추측을 요구하며 여기에서 벗어난 주제입니다. –

답변

4

바로 당신의 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

(또는 그와 관련된 ActivityRecord있을 수도 있고 없을 수도 있습니다 단지 view)는 Window입니다

mFocusedAppAppWindowToken입니다 (appToken). 항상 ActivityRecord)

그래서 입력 포커스는 activityview 전환시 - 모두 mCurrentFocusmFocusedApp가 동일한 activity 표시한다. 그러나 때로는 activity (시스템 UI의 부품 등)이없는 view 스위치가 있습니다. mCurrentFocusview이지만 mFocusedApp은 여전히 ​​마지막 스위치 이전에 appActivityRecord을 보여줄 것입니다.