检查 activity 是否可见(在 Resume Pause 上不适合,因为多窗口模式)
Check if activity is visible (onResume&Pause dosen't suit, because of multiwindow mode)
我需要以某种方式确保 activity 在屏幕上对用户可见。
我们可以通过监听 Activity class 中的 onResume 和 onPause 事件并在这些函数中设置一些布尔值来做到这一点。
但是onPause不仅会在你最小化你的activity时被调用,onPause也会在你在multiwindow模式下切换到其他window时被调用(Android 7.x牛轧糖)
所以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
方法将执行一些操作。
我发现这个关于你的问题的有趣 link:Multiwindow
我需要以某种方式确保 activity 在屏幕上对用户可见。
我们可以通过监听 Activity class 中的 onResume 和 onPause 事件并在这些函数中设置一些布尔值来做到这一点。
但是onPause不仅会在你最小化你的activity时被调用,onPause也会在你在multiwindow模式下切换到其他window时被调用(Android 7.x牛轧糖)
所以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
方法将执行一些操作。
我发现这个关于你的问题的有趣 link:Multiwindow