如何防止android设备的屏幕在活动执行期间关闭?

如何防止android设备的屏幕在活动执行期间关闭?,android,android-activity,Android,Android Activity,我有一个活动,通常需要一些时间来观看屏幕而不与之交互 问题是屏幕会关闭,就像almos的其他应用一样。 我想防止自动关闭我的活动,就像Dolphin HD那样(如果您从设置菜单进行配置) 我想让用户按常用的块按钮关闭屏幕,但在我的活动中阻止设备的自动块 我怎样才能做到这一点 Thanx.将android:keepScreenOn=“true”添加到此活动的布局XML资源中的某个小部件。只要小部件在屏幕上可见,屏幕就不会自动关闭 编辑: 正如其他答案所建议的那样,WakeLock在技术上是可行的。

我有一个
活动
,通常需要一些时间来观看屏幕而不与之交互

问题是屏幕会关闭,就像almos的其他应用一样。 我想防止自动关闭我的
活动
,就像Dolphin HD那样(如果您从设置菜单进行配置)

我想让用户按常用的块按钮关闭屏幕,但在我的
活动中阻止设备的自动块

我怎样才能做到这一点


Thanx.

android:keepScreenOn=“true”
添加到此活动的布局XML资源中的某个小部件。只要小部件在屏幕上可见,屏幕就不会自动关闭

编辑:


正如其他答案所建议的那样,WakeLock在技术上是可行的。但是你必须手动释放WakeLock(唤醒锁)(如果你弄糟了,屏幕会长时间显示)。而且,因为你可能会把事情搞砸,你需要
唤醒锁
权限。使用
keepScreenOn
可以避免所有这一切。

您需要在清单中添加唤醒锁,并根据需要在应用程序中设置和删除它。 请参阅此处的google文档以获取PowerManager.WAKE_LOCK


您可能需要使用唤醒锁来防止屏幕关闭。请参考动态更改,执行以下操作:

if (keepScreenOn)
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
else
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
对于“Xamarin Android”:

处理碎片和屏幕旋转 Android文档概述了每个解决方案

解决方案#1-标志 文件-

对于片段s,使用电池密集度较低的编程方法

使可能
活动!!。window.addFlags(WindowManager.LayoutParams.FLAG\u保持屏幕打开)

使残废
活动!!。window.clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON)

对于我的用例,我在
onStop()
中调用了它,因此当显示媒体内容的片段退出时,屏幕将默认为正常配置

避开
keepScreenOn=true
在发生配置更改(如碎片的屏幕旋转)时不起作用

注意:Android的文档应相应更新以处理此情况

解决方案#2-尾流锁定 文档-带唤醒锁


唤醒锁提供了更多的控制来保持设备的特定元素处于唤醒状态,但是电池消耗更大,手动释放以节省电池非常重要,因为它不是由系统自动处理的。

您要搜索的是一个。@alextsc:实际上,对于UI,有一个更好的答案。你指的是“小部件组件”意义上的小部件?或者某个视图?答案是Thanx,效果很好:)我认为wakelock可能是一个好方法,但这一个更简单。我尝试将此属性添加到一个视图中,该视图位于一个片段的内部,该片段最初已消失,并通过应用程序中的代码设置为可见。这不起作用:屏幕仍然关闭。“noelicus”的答案很好。@treesareverywhere:
android:keepScreenOn
用于更简单的场景。如果更改具有“keepScreenOn”属性的视图的可见性,它将不起作用。例如,如果视图中的属性最初是隐藏的,但稍后显示,则屏幕仍将关闭。在这种情况下,使用WindowManager.LayoutParams.FLAG_KEEP_SCREEN__,如“noelicus”的答案所述。Thanx作为答案和指向文档的链接,理解如何做这类事情总是很好的,但这次我想我将使用@Commonware解决方案:PThanx作为答案,这是非常有用的
Window.AddFlags(WindowManagerFlags.KeepScreenOn);