标题说明了一切。我怎么知道什么时候由于方向改变而不是按下返回或主页按钮被调用onPause()?

最佳答案

我通过做this来完全避免了这个问题:

您可以使用onWindowFocusChanged事件代替onPause。方向更改时,不会调用此函数。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    Log.d(TAG, "FOCUS = " + hasFocus);
    if (!hasFocus) finish();
}


但是请注意:当活动仍然可见时(例如onPause()),将调用此事件,如果要在完全不可见的活动结束时结束活动,则应使用onStop:

private boolean isInFocus = false;

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    Log.d(TAG, "FOCUS = " + hasFocus);
    isInFocus = hasFocus;
}

@Override
public void onStop() {
    super.onStop();
    if (!isInFocus) finish();
}

关于java - 我怎么知道什么时候由于方向改变而不是返回/返回而调用onPause()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19415365/

10-12 00:30