java - 检查 Activity 是否可见(onResume Pause 不适合,因为多窗口模式)

标签 java android android-7.0-nougat android-7.1-nougat multi-window

我需要以某种方式确保屏幕上的 Activity 对用户可见。

我们可以通过监听 Activity 类中的 onResume 和 onPause 事件并在这些函数中设置一些 boolean 值来做到这一点。

但是 onPause 不仅在你最小化你的 Activity 时被调用,当你在多窗口模式下切换到其他窗口时也会调用 onPause (Android 7.x Nougat)

所以boolean onPause&onResume方法会导致错误。

那怎么知道Activity的可见性呢?

感谢您的帮助。

最佳答案

Nougat 及以上你必须检查 onStop 方法,当你的 Activity 不可见时它会告诉你,你可以使用这个代码:

@Override
public void onPause() {
  super.onPause();
  if (Build.VERSION..SDK_INT <= 23) {
    //your activity is not visible
    onHidden();
  }
}
@Override
public void onStop() {
  super.onStop();
  if (Build.VERSION..SDK_INT > 23) {
    //your activity is not visible
    onHidden();
  }
}

假设您的onHidden 方法将执行一些操作。

我发现了这个关于您的问题的有趣链接:Multiwindow

关于java - 检查 Activity 是否可见(onResume Pause 不适合,因为多窗口模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47609869/

相关文章:

Android:如何获取外部存储 PUBLIC 目录中文件的 content://URI

java - 从 android 键码到 java 键码

java - onActivityResult 无法正常工作

java - 是否可以在 Flex 应用程序中运行 Java 程序?

java - Android - 你能为 SQLite 结果更新 Cursor 吗?

android - Worklight 应用程序崩溃并出现错误 android.content.res.Resources$NotFoundException

缓存目录 : Failed to find configured root that contains 的 Android FileProvider

android - IBM Mobilefirst 7.0 - 提供期间的 JSONStore 错误无法定位符号 "CBB_add_u16"

java - 如何在 Frege native 声明中声明 Java 枚举?

java - Java 中 PHP 的 strtotime()