某些应用(例如游戏或电影应用)需要保持屏幕处于开启状态。 某些 Android API 会自动让屏幕保持开启状态。在其他情况下,您可以设置一个标志来手动使屏幕保持开启状态。
手动让屏幕保持开启状态
如需让设备屏幕保持开启状态,请在 activity 中设置 FLAG_KEEP_SCREEN_ON 标志。此标志只能在 activity 中设置,绝不能在服务或其他应用组件中设置。例如:
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
另一种让屏幕保持开启状态的方法是在应用的布局 XML 文件中设置 android:keepScreenOn 属性:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
使用 android:keepScreenOn="true" 相当于使用 FLAG_KEEP_SCREEN_ON。您可以根据应用的情况选择最合适的方法。在 activity 中以编程方式设置该标志的优势在于,您可以选择在稍后以编程方式清除该标志,从而允许屏幕关闭。
如果具有 FLAG_KEEP_SCREEN_ON 标志的应用进入后台,系统会允许屏幕正常关闭。在这种情况下,您无需明确清除该标志。如果您的应用不再需要让屏幕保持开启状态,您应通过调用 clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) 清除该标志。
电视氛围模式
在 TV 设备上,使用 FLAG_KEEP_SCREEN_ON 可防止设备在主动播放视频期间进入氛围模式。如果前台 activity 未设置 FLAG_KEEP_SCREEN_ON,设备会在一段时间不活动后自动进入氛围模式。