活動、断片またはビューが隠されているかどうかをチェックすることができます。
アクティビティの場合は、オーバーライドdispatchTouchEventメソッドが必要で、イベントにフラグFLAG_WINDOW_IS_OBSCUREDがあるかどうかを確認する必要があります。サンプルコードがあります:
public class OverlayTouchActivity extends Activity {
private boolean mObscuredTouch;
public boolean isObscuredTouch() {
return mObscuredTouch;
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
mObscuredTouch = (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0;
return super.dispatchTouchEvent(event);
}
}
これはAndroidのコードの一部である、OverlayTouchActivity.javaを確認してください。断片が隠されている場合、チェックOverlayTouchActivity活動に属する断片は次のコードを実行するために:
OverlayTouchActivity activity = (OverlayTouchActivity) getActivity();
if (activity.isObscuredTouch()) {
// Fragment is bbscured
}
AppPermissionsFragment.java断片(OverlayTouchActivityの検索)を参照してください。
の場合、onFilterTouchEventForSecurityメソッドをオーバーライドする必要があります。詳細については、Viewドキュメントのsecurity sectionを参照してください。
onPause()がその場所になります。あなたの活動がバックグラウンドで行われるたびに呼び出される必要があります。再チェックしていただけますか? –
私は、あなたはonBackPressedまたはHomePressEnabled条件でいくつかのブール値を追加する必要がありますと思います。 –
@ abhishek-bansal私はすでにそれを確認して確認しました。パワーメニューや音量コントロールなどのシステムアラートが自分のアクティビティにオーバーレイされているときは、onPause()は呼び出されません。 – user1118764