在onPause()内部调用finish(),但在方向更改时调用

Joh*_*ini 4 android orientation onpause android-activity

我有一个应用程序需要在有人退出其主要活动时调用完成(所以我不希望它被暂停),即使按下home活​​动也必须完成,处理这个当前我只是调用finish()我的onPause()方法,因为一切完成片段它很好地工作,并没有给出任何稳定性问题.

我唯一的问题是我无法处理onPause()以前调用的方向更改onConfigurationChanged()(允许我在发生旋转时禁用此行为).

我可以创建一个服务来处理这个,但它的方式复杂.

任何的想法?

mat*_*kin 7

您可以使用onWindowFocusChanged事件而不是onPause.方向更改时不调用此函数.

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

但请注意:当活动仍然可见时(例如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();
}
Run Code Online (Sandbox Code Playgroud)