我有一个应用程序需要在有人退出其主要 Activity 时调用完成(所以我不希望它被暂停),即使按下主页 Activity 也必须完成,来处理这个目前我只是在我的 onPause()
方法中调用 finish()
,因为一切都是用 fragment 完成的,所以它工作得很好并且没有稳定性问题。
我唯一的问题是我无法处理方向变化,因为 onPause()
在 onConfigurationChanged()
之前被调用(允许我禁用这个发生旋转时的行为)。
我可以创建一个服务来处理这个问题,但它的方式很复杂。
有什么想法吗?
最佳答案
您可以使用 onWindowFocusChanged事件而不是 onPause。方向改变时不会调用此函数。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.d(TAG, "FOCUS = " + hasFocus);
if (!hasFocus) finish();
}
但请注意:当 Activity 仍然可见时调用此事件(如 onPause()),你应该 如果您想在 Activity 真正完全不可见时完成它,请使用 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();
}
关于android - 在 onPause() 内调用 finish() 但在方向改变时不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16274182/