安卓手机APP开发_媒体开发部分__保持设备处于唤醒状态

2024-04-28 06:28

本文主要是介绍安卓手机APP开发_媒体开发部分__保持设备处于唤醒状态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安卓手机APP开发_媒体开发部分__保持设备处于唤醒状态

目录

概述

使用唤醒锁的用法

保持屏幕在亮着

电视的环境模式

保持CPU处于运行状态


概述

为了避免多消耗电池电量,安卓设备会很快进入休眠状态.然而,也是需要保持它一直
处于唤醒的状态,来完成某些工作.

你使用的方法依赖于你的APP的需要.然而,通用的规则是你应该使用最轻量级的方法,
最小化你的APP对系统的影响.如下的部分描述了如何处理这样的用例,即设备的默认的
休眠行为与你的APP的需求是不一致的情况.

使用唤醒锁的用法

在对你的APP加唤醒锁的支持之前,考虑你的APP的用例是否支持如下的备选解决方案:

如果你的APP正在执行长时间的HTTP下载,考虑使用下载管理器.

如果你的APP正在从一个外部的服务器同步数据,考虑创建一个同步的适配器.

如果你的APP依赖于后台的服务,考虑使用作业调度器或者是Firebase的云消息
来触发这些有特定的间隔的服务.

如果你需要无论何时,只要一个陪伴设备在用,你的陪伴的APP就在运行中,请使用
陪伴设备管理器.

保持屏幕在亮着

特定的APP需要保持屏幕是一直开着的,例如游戏或者是电影APP.
为了做到这一点,最好的方式是在你的活动中使用FLAG_KEEP_SCREEN_ON.
(仅在活动中,而不是在一个服务或者是其它的APP组件中)
例如

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)}
}

这个方法的优势是它不同于唤醒锁,它不需要有特定的权限,平台正确的管理着
用户在各个应用之间的切换,你的APP不需要担心关于没有的资源的回收问题.

另一个方法是在你的应用的XML文件中实现这一点,使用的方法是
安卓的保持屏幕开的属性:

<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。对于你的APP来说,
你能使用的哪一个方法都是好的。在你活动中,程序化地设置标识的优势是它给你程序化地
取消这个标识的灵活性,即它允许屏幕再关闭。


电视的环境模式

在电视上,FLAG_KEEP_SCREEN_ON应该被使用来阻止设备进入环境模式。
当FLAG_KEEP_SCREEN_ON没有被前台的活动设置时,在一段时间的非活动状态之后,
设备将自动地进入到环境模式。

保持CPU处于运行状态

如果你需要保持你的CPU处于运行状态,目的是为了在设备进入休眠之前完成一些工作,
你能使用一个电源管理器的系统设备特性,这个特性叫做唤醒锁。唤醒锁允许你的应用
控制主机设备的电源状态。

创建和保持唤醒锁,对于主机设备的电池寿命有戏剧性的重大的影响。因此,只有当你迫切地
需要使用它时,才应该使用唤醒锁,并且保持使用它的时间尽可能地短。例如,你应该根本不需要
在一个活动中使用它。如上的描述,如果你需要在你的活动中保持屏幕是亮的,使用
FLAG_KEEP_SCREEN_ON。

使用一个唤醒锁的一个合情合理的用例可能是一个后台的服务,它需要抓取一个唤醒锁,
来保持CPU处于运行状态,来实现屏幕不亮时的工作。再强调一下,这个做法应该是最小化的,
因为它对电池的寿命有影响。

为了使用一个唤醒锁,第一步是在你的配置文件中加上它的权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

如果你的APP包含了一个广播接收器,使用了一个服务来做一些工作。这里是如何直接
地设置一个唤醒锁的方法:

Kotlin

val wakeLock: PowerManager.WakeLock =(getSystemService(Context.POWER_SERVICE) as PowerManager).run {newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply {acquire()}}


为了释放唤醒锁,调用wakelock.release()。这个释放是需要CPU的。只要你的APP完成了任务,
释放这个唤醒锁是很重要的,使用这个释放是为了避免浪费电池。

这篇关于安卓手机APP开发_媒体开发部分__保持设备处于唤醒状态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/942508

相关文章

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并