Android 窗口标志 : Are flags set in an activty persistent throughout the entire app itself?

标签 android android-activity flags

这是我的一个 Activity 中的一小段代码。

Window window = this.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);

我已经将 list 设置为允许使用 WAKE_LOCK 的权限。现在,我不确定的是在一项 Activity 中设置的标志。

如果许多 Activity 中的一个向窗口“添加”一个标志,例如屏幕保护程序标志,它们是否会在整个应用程序中持久存在?

我的直觉是,如果一个 Activity 要设置或添加一个标志,则只有在被标记的 Activity 处于 Activity 状态时,该标志才处于 Activity 状态。如果它调用 Intent 来启动另一个 Activity (未指定标志),则设置标志将被取消,直到有意的、未标记的 Activity 完成,然后它可能恢复到其在标记 Activity 中的原始设置状态。

我错了吗?提前致谢。

最佳答案

最好通过实验解决的有趣问题:

我刚刚通过编写一个包含两个 Activity 的小应用程序对其进行了测试,一个通过单击按钮打开另一个。我已将屏幕超时设置为 15 秒。

Activity1 在其 onCreate() 方法中包含保持屏幕打开的命令,而 Activity2 则没有。现在,当 Activity1 可见时,屏幕不会关闭(很明显)。在我打开 Activity2 15 秒后,它确实如此。所以你是对的,只有在显示 Activity 时,Flag 才有效。

有趣的是,您是否在 Activity1 上调用 finish() 并不重要。即使 Activity1 没有被销毁(onDestroy() 没有被调用,只有 onPause())这个标志也会无效。

如果您返回到第一个 Activity,onCreate() 实际上不会在 Activity1 上再次调用,但 Flag 再次有效(因为该 Activity 是从具有其先前功能的 Stack 中恢复的)。

关于Android 窗口标志 : Are flags set in an activty persistent throughout the entire app itself?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259455/

相关文章:

android - 如何将 ListPreference 中的条目项目灰显

java - 进入新的 Android Activity 时出错

android - 我可以使用 zxing intents 修改相机预览屏幕吗?

sql - 将 "summed up flags"转换回原来的含义

Android FLAG_NEW_TASK 和 FLAG_SINGLE_TOP Activity 未被垃圾收集

java - 如何从 fragment 开始向 Activity 添加 fragment ?

java - 主要 Activity 中的接近传感器 Activity - 重复类

c# - Xamarin Android 以编程方式下载并安装 apk

java - 在 Activity 之间传递变量值

C# - 如何检查字节值是否与指定标志枚举中的任何标志匹配?