2016-09-28 15 views
2

私はAndroidデバイスとJavaコードのやり取りにappuimを使用しています。そして、ホームボタンを押した後のある種のデバイス(エミュレータを含む)では、appiumが間違った現在のアクティビティを返すという問題に直面しました(現在は最小限に抑えなければならないアクティビティを返す)。私はappiumがdumpsys window windowsを使用して、現在のアプリケーションを取得するための値mFocusedAppを取得していることがわかりました。私はAndroidの現在の活動を得ることについて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があってもなくてもよいだけでviewWindowです

mFocusedAppは、AppWindowTokenです(appToken)。これは常にActivityRecord

をだからactivityviewに、入力フォーカススイッチ - mCurrentFocusmFocusedApp両方が同じactivityを示すであろう。しかし、activity(SystemUIの部分など)がない場合は、viewにフォーカスが移ることがあります。mCurrentFocusは、viewですが、mFocusedAppは、最後の切り替え前にフォーカスを持っていたActivityRecordを表示します。

関連する問題