保持屏幕唤醒的几种方式总结
1.通过WakeLock的方式
首先设置唤醒锁的权限
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DEVICE_POWER"/>
代码示例:
private PowerManager.WakeLock mWakeLock;private void acquireWakeLock() {if (mWakeLock == null) {PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);mWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG);}//建议计数模式设置为truemWakeLock.setReferenceCounted(false);mWakeLock.acquire(60 * 1000);
}private void releaseWakeLock() {if (mWakeLock.isHeld()) mWakeLock.release();
}`
总结:
- 尽量使用 acquire(long timeout) 设置超时, (也被称作超时锁). 例如网络请求的数据返回时间不确定, 导致本来只需要10s的事情一直等待了1个小时, 这样会使得电量白白浪费了. 设置超时之后, 会自动释放已节省点远.
- 建议计数模式setReferenceCounted()设置为true,这样调用一次 release() 就会释放所有锁。
- 兼容性问题:PowerManager.SCREEN_DIM_WAKE_LOCK模式已经在废弃。
2.通过window的flag属性设置
示例代码:
private void acquireWakeLock(Activity activity) {if (activity != null && activity.getWindow() != null) {activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);}
}private void releaseWakeLock(Activity activity) {if (activity != null && activity.getWindow() != null) {activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);}
}
`
3.通过设置View的属性
在布局文件里加上
android:keepScreenOn="true"
总结:
- 兼容性:采用window的flag的方式的兼容性更广
Api的友好性:可以手动进行管理屏幕的唤醒与否
综合比较选择window的flag方式。
参考文章:
https://blog.csdn.net/a57565587/article/details/51669520/
https://www.jianshu.com/p/48ed37738a9e/
保持屏幕唤醒的几种方式总结相关推荐
- Android中获取屏幕信息的几种方式
Android中获取屏幕信息的几种方式 方案一 方案二 方案三 Note:以下方案中的this均指Activity. 方案一 WindowManager wm = (WindowManager) th ...
- Android获取屏幕信息的几种方式
方式一 //获取屏幕信息的几种方式一:DisplayMetrics metrics = new DisplayMetrics();WindowManager manager = (WindowMana ...
- android屏幕适配的五种方式_讲一讲Android 9.0系统的新特性,对刘海屏设备进行适配...
黑客技术点击右侧关注,了解黑客的世界! Java开发进阶点击右侧关注,掌握进阶之路! Python开发点击右侧关注,探讨技术话题!作者丨郭霖来源丨郭霖(guolin_blog) 其实Android 9 ...
- ios 旋转屏幕试图切换_总结iOS App开发中控制屏幕旋转的几种方式
在iOS6之前的版本中,通常使用 shouldAutorotateToInterfaceOrientation 来单独控制某个UIViewController的方向,需要哪个viewControlle ...
- QT 屏幕旋转的两种方式
1.方式一: #include "mainwindow.h" #include <QApplication> #include <QGraphicsView> ...
- 全志T507操作小技巧连载1-T507屏幕切换的两种方式
一.硬件操作平台介绍 FETT507-C核心板集成全志T507四核车规级处理器设计开发,Cortex-A53架构,主频1.5GHz,集成G31 GPU,内存2GB DDR3L,存储8GB eMMC.整 ...
- 全志T507屏幕切换的两种方式
本文介绍了飞凌嵌入式全志T507屏幕切换控制的两种方式. 二.屏幕切换 OKT507-C开发板支持MIPI DSI.HDMI.TV等多种屏幕接口,同时可以进行两个屏幕的同显和异显,可灵活指定HDMI接 ...
- java线程阻塞唤醒的四种方式
java在多线程情况下,经常会使用到线程的阻塞与唤醒,这里就为大家简单介绍一下以下几种阻塞/唤醒方式与区别,不做详细的介绍与代码分析 suspend与resume Java废弃 suspend() 去 ...
- Android屏幕适配的两种方式
ScreenHelper github 地址:github.com/bugyun/Scre- 欢迎 star 和 提问. 第一种适配方式 - sw 方式 插件版本: 使用方法 在项目的根 build. ...
最新文章
- 之全能忙内_临沧大名山茶:喝过诸多忙肺茶,但你不知道什么是“隔年香”
- html中radio,checkbox值的获取、赋值、注册事件
- leetcode 40. 组合总和 II 思考分析
- [html] 写个布局,当页面高度不够时,底部固定在下面,反之不固定
- 【华为出品】物联网全栈开发实战营第2期来啦!送海思开发板
- 1215课后练习----判断字符串位置
- 百度宣布7nm制程AI芯片“昆仑芯2”实现量产
- dataframe 根据条件查找_python – 在pandas DataFrame中查找(仅)满足给定条件的第一行...
- [转]coolfire黑客入门教程系列之(六)
- 【原创】Structure from Motion (SfM)算法测试---3D重建简介
- SAP——ABAP报表的一般格式
- 关闭Tomcat报错The web application [ROOT] appears to have started a thread named [Abandoned connectio
- api文档 luci_openwrt中luci学习笔记
- 阿里 java 面试题 p6_「独家」五面阿里P6:Java开发面试题及答案
- J9说数字科普为何DeFi永不消亡
- Steam游戏—底特律:化身成人,回家章节中女主角上二楼打扫卫生,按L Shift开窗按不动怎么办
- 信息学奥赛一本通:1084:幂的末尾
- 流量为王时代,APP推广需要解决难题,如何解决分享绑定上下级关系。
- 服务器配置jdk环境
- 仿【得物】微信小程序实战全教程(动手就会)