2016-09-28 173 views
2

我使用appuim進行Android設備和java代碼之間的交互。並且我在按下主頁按鈕後遇到了某些設備(包括模擬器)上的問題,appium返回錯誤的當前活動(它返回當前必須最小化的活動活動)。我發現appium使用dumpsys window windows,爲獲取當前應用抓取mFocusedApp值。我讀another answers有關獲取Android的電流活動,而且大多推薦使用:adb shell dumpsys窗口窗口輸出描述

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

這是問題的根源,因爲按鏈接到不同的活動主頁按鈕mCurrentFocusmFocusedApp後。但我無法找到這些領域之間的區別解釋。爲什麼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}}} 

mCurrentFocusWindow(只是一個view可能會或可能不會有與之相關的ActivityRecord

mFocusedApp是一個AppWindowToken(一個appToken它將始終有一個ActivityRecord

所以,當輸入焦點切換到viewactivity - 既mCurrentFocusmFocusedApp會顯示相同的activity。但有時焦點切換到view沒有activity(如SystemUI的部件,等) - 然後mCurrentFocus將表示viewmFocusedApp仍然會顯示app其中有最後切換之前的焦點ActivityRecord