Android应用禁止屏幕休眠的几种方法

Android应用禁止屏幕休眠的几种方法,第1张

方法一:添加休眠锁,休眠锁必须成对出现。

方法二:在Activity布局中设置Windows属性进行控制,但是一定要在加载布局之前执行,此种方法的局限性是只有在Activity类中有效,Activity退出时失效。

方法三:在View布局中添加属性,此种方法的好处是不一定非要在Activity界面运行时屏幕常亮才有效,View启动后可以自主设置。

View的xml布局中加入:

android:KeepScreenOn="true"

代码中执行是否保持屏幕常亮:

ViewsetKeepScreenOn(true);

ViewsetKeepScreenOn(false);

休眠,简而言之就是设备在不需要工作的时候把一些部件、外设关掉(掉电或让它进入低功耗模式)。
为什么要休眠呢?一言以蔽之:省电。
休眠分主动休眠和被动休眠。主动休眠:比如我电脑不用了,就通过设置让系统进入休眠模式;被动休眠:系统检测到自己闲的慌,为了节约故,自己就休眠去了。

休眠是内核的核心工作,而Android是基于Linux内核的,所以Android休眠和内核有着千丝万缕的联系;由于Android的特殊应用场景:移动设备,所以Android休眠和内核又有着特别的需求。
1、联系:
Android设备停止使用,系统没有什么事情可做,进入休眠状态的功能最终是由内核去实现的;每一类硬件都有自己的驱动,具体的驱动决定怎么进入休眠以及处于何种层次的休眠。比如:对于platform_device,就按照platform_driver定义的规则,在suspend调用的时候,去做上面提到的事情:

2、Android的特别需求:
比如对于自己的电脑,不用让它休眠好了;但是对于我们形影不离的手机,在休眠的时候还要睁一只眼:来电了要通知你,QQ啊微信啊什么的由信息了也要通知你,所以Android在Linux内核休眠机制之上,提出了“Opportunistic Suspend”。

絮絮叨叨这么多,下面让我们切切实实体验下休眠。
1、休眠模式
休眠是分好几种模式的,不同模式实现方式、耗电量不同,以下来自Documentation/power/statestxt:

虽说kernel支持上述四种休眠模式,但具体哪几种可用取决于你的硬件。那么怎么知道自己的Android设备支持的休眠模式呢?

答案:通过/sys/文件系统。查询支持的休眠模式可以cat文件/sys/power/state:

如果我们往/sys/power/state文件echo上面的某一种模式的字符串,系统就会进入相应的休眠模式:

如果你搜索过Android休眠相关的内容,在老版本的Android(44版本之前)会见有提到PowerManager的setPowerState()方法,该方法即是通过以上方式使系统进入休眠。但自从引入Autosleep后,就不在这么做了,setPowerState()方法也销声匿迹。

2、/sys/power/目录下文件

文件简介:

1、Android设备屏幕暗下来的时候,并不是立即就进入了休眠模式;当所有唤醒源都处于de-avtive状态后,系统才会进入休眠。

2、Android设备连着adb线到其他设备的情况下,设备是不会进入休眠模式的。

3、有休眠 *** 作就有唤醒,就需要唤醒源。唤醒源有很多种,在内核注册,比如常用的Power按键。

4、曾经困惑的一个问题:系统怎么知道自己应该进入休眠模式了?它的判断依据是什么?

在wakelock时代,系统休眠过程中去检测休眠锁;如果系统中没有其他部件持有休眠锁,就尝试进入休眠模式,没有异常事件发生的话就进入休眠模式。
Android从44开始使用autosleep机制,只要不存在任何active的唤醒源(wakeup_source)了,就进入休眠模式。

5、系统Power Manager整体流程

1、安卓系统手机可以进入设置。
2、在设置里找到,显示。
3、在显示中找到,休眠。
4、在休眠下选择,永不休眠,这样手机就不会黑屏,只有用户在手动按下锁屏键后屏幕才会关闭。
其他
步骤:
1 打开手机,找到“设置”。
2 点击“设置”,进入找到“其他高级设置”。
3 在“其他高级设置”里面,找到“显示”。
4 在“显示”中找到“休眠”。
5 进入“休眠”,点击“永不”。
第一步:打开手机,找到“设置”。
第二步:点击“设置”,进入找到“其他高级设置”。
第三步:在“其他高级设置”里面,找到“显示”。
第四步:在“显示”中找到“休眠”。
第五步:进入“休眠”,点击“永不”。
您可以根据使用习惯,设置屏幕自动休眠时长,设置方法:
点击设置 > 显示 > 休眠,设置休眠时间,最长的休眠时间目前是可以设置成10分钟。
EMUI80之后休眠时间部分手机可以设置为“永不”休眠,设置方法:点击设置 > 显示 > 休眠>永不。
注: OLED屏不支持设置永不休眠。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12958354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存