某些应用需要保持屏幕开启状态,例如游戏或电影应用。某些 Android API 会自动为您保持屏幕开启状态。在其他情况下,您可以设置标志以手动保持屏幕开启状态。
手动保持屏幕开启
要保持设备屏幕开启,请在您的活动中设置 FLAG_KEEP_SCREEN_ON
标志。此标志只能在活动中设置,而不能在服务或其他应用组件中设置。例如
Kotlin
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
Java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().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
。您可以根据应用的需要选择任何一种方法。在活动中以编程方式设置标志的优点是,您可以选择稍后以编程方式清除标志,从而允许屏幕关闭。
如果带有 FLAG_KEEP_SCREEN_ON
标志的应用进入后台,系统会允许屏幕正常关闭。在这种情况下,无需显式清除标志。如果您的应用不再需要保持屏幕开启,则应通过调用 clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
来清除标志。
适用于电视的环境模式
在电视设备上,使用 FLAG_KEEP_SCREEN_ON
可防止设备在主动视频播放期间进入 环境模式。如果前台活动未设置 FLAG_KEEP_SCREEN_ON
,则设备会在一段时间不活动后自动进入环境模式。