android - 在 onPause() 内调用 finish() 但在方向改变时不调用

标签 android android-activity orientation onpause

我有一个应用程序需要在有人退出其主要 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/

相关文章:

android - 如何将外部 XML 文件检索到 Android 应用程序中

android - 显示弹出窗口时将灰色应用于非 Activity 屏幕

java - Android + WS-* 服务?

android - ReceiverRestrictedContext 无法转换为 android.app.Activity

swift - 如何在 iOS 8 中使用 Swift 播放电影时旋转 MPMoviePlayer?

java - 如何在我的 Activity 中动态添加 fragment ?

android - 通过 intent extras 在 Activity 之间传递的关键数据的安全性

android - 在android中的 Activity 之间传递非原始类型的数据

iphone - 水平 UITableView

iPhone 开发 - 手动旋转 View