Android 屏幕关闭时识别音量按钮按下

2024-02-28

我试图识别用户何时在屏幕关闭时按下音量键来更新活动。根据我的阅读,广播接收器(我认为)在手机睡眠时不起作用,因此唯一的方法是使用 PARTIAL_WAKE_LOCK 保持活动运行。我的应用程序是一个基本应用程序,不应该使用太多电池,但我担心使用 PARTIAL_WAKE_LOCK 可能会耗尽电池(这违背了屏幕关闭时识别按钮按下的目的)。

对于基本应用程序来说,PARTIAL_WAKE_LOCK 实际上会成为问题吗?如果是这样,执行此操作的最佳方法是什么,如果不是,使用 PARTIAL_WAKE_LOCK 的最佳方法是什么(即我应该何时获取/释放它)?

提前致谢。


这里有两个问题;我将重点关注其中的“WAKELOCK”部分。

唤醒锁因消耗移动设备的电池而臭名昭著。了解设备会将屏幕调暗,然后关闭屏幕,然后关闭 CPU 并进入“睡眠”模式。这对于您的手机来说是极其重要的一步,因为它可以节省电池。

唤醒锁非常危险,因为完成后很容易忘记释放锁。

一般来说,当设备尝试睡眠时,您不应该尝试让其保持唤醒状态;当您耗尽用户的电池时,这会激怒您的用户。

以下是一些可以更好地处理唤醒锁的技巧:

1) 仅当用户已连接/充电时才允许此操作

2) 使用接受超时参数的 WakeLock.aquire(..) 版本。这样,您可以醒来,检查某些状态,然后如果没有发生任何事情,则自动返回睡眠状态。 (看http://goo.gl/FkrO8 http://goo.gl/FkrO8)

3)使用AlarmManager创建不精确的定时器;这将允许您的应用程序在其他应用程序也被唤醒并工作时被唤醒。

4) 使用 JobScheduler API(在 L 中发布),它允许您从单个 API 处理此类调度和工作延迟。 (看http://goo.gl/Z1AqSn http://goo.gl/Z1AqSn)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 屏幕关闭时识别音量按钮按下 的相关文章

  • 使用DBFlow,如何加密已经存在的数据库?

    我正在使用 DBFlow 来处理项目中的数据库 并且我想对现有数据库进行加密 我知道我可能必须删除现有的未加密数据库并创建另一个加密数据库 我也知道我可以将 SQLCipher 与 DBFlow 一起使用 如上所述文档 https gith
  • 音频流的最佳实践

    我正在编写一个应用程序来播放远程服务器的音频 我尝试了多种方法来实现流音频 但它们对我来说都不够好 这就是我尝试过的 幼稚地使用 MediaPlayer 就像是 MediaPlayer player new MediaPlayer play
  • 嵌套 XML 布局文件

    android 有没有办法从另一个布局文件引用 xml 布局文件 为了更好地解释 我有一个名为layout1 xml 和layout2 xml 的布局文件 我可以从layout1 xml引用layout2 xml吗 用这个
  • CoordinatorLayout 和 ImageView 在滚动时调整宽度的问题

    我正在尝试放置一个ImageView in a CollapsingToolbarLayout它在加载时占据整个屏幕 并且当您滚动内容时 16x9 分辨率图像宽度会调整大小 直到图像占据屏幕的整个宽度 那时 我希望图像具有视差app lay
  • 如何在Android中的DataBinding的ViewModel类中获取R.string

    我目前正在使用databinding对于我的 Android 应用程序项目 我想设置error留言在我的CustomTextView from R string txtOldPassWordError并从另一个名为的类中进行设置ViewMo
  • Play 商店中的应用描述更新

    我想更新应用程序的描述以及 Play 商店上的屏幕截图 但应用程序保持相同 即相同的版本号 我不想发布新应用程序 因为应用程序中没有任何更改 这可能吗 谷歌也会要求更新应用程序吗 您可以更新描述 也可以更改屏幕截图 您的应用程序将保持不变
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • Toast 消息消失后​​完成活动吗?

    有谁知道 是否有可能对 Toast 消息执行某些操作 在我的情况下完成活动 将被关闭 您只需创建一个Thread持续时间只要Toast显示 然后您就可以完成您的Activity public void onCreate Bundle sav
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • AndEngine MenuScene - 无法单击按钮

    我有一个关于 android 和 andengine 的小问题 这是我的主菜单的源代码 AbstractScene is extending Scene public class MainMenuScene extends Abstract
  • 我在 android studio 中使用 kotlin 时出现错误

    为什么会出现这个错误 09 12 16 36 31 502 1886 1886 com getloction nourmedhat smartgate getlocation E AndroidRuntime 致命异常 main 进程 co
  • Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

    更新 我通过添加 previousMarker 对象解决了性能问题 因此 只有先前单击的标记将被删除并替换为默认图标 但是 当我单击标记时 信息窗口仍然不显示 我有一个地图视图并在上面设置了一些标记 我想要的是 当我单击一个标记时 它将其图
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • TextView.setMaxLines 不起作用?

    在我的应用程序中 我有一个屏幕 其中显示一些文本 然后显示一张照片 文本的长度是可变的 有时根本没有 有时很多 所以我想对其进行设置 以便文本永远不会占用超过几行 但可以滚动 为下面的图像留下足够的空间 我这部分的视图组件是以编程方式创建的
  • 了解应用程序在后台时何时收到 Firebase 消息

    我知道这个标题有同样的问题 但不幸的是它没有得到正确的回答 它被接受了 here https stackoverflow com questions 37711082 how to handle notification when app
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • Android ScrollView,检查当前是否滚动

    有没有办法检查标准 ScrollView 当前是否正在滚动 方向是向上还是向下并不重要 我只需要检查它当前是否正在滚动 ScrollView当前形式不提供用于检测滚动事件的回调 有两种解决方法可用 1 Use a ListView并实施On
  • 调试android数据绑定?

    谁能告诉我如何调试或找到数据绑定生成的代码 从this https www youtube com watch v NBbeQMOcnZ0链接我发现它生成了所需的代码 我猜您正在寻找自动生成的绑定 java 文件 我也在寻找他们 最后我在这
  • TabLayout 的不同 tabMode

    我正在使用 ViewPager 和 TabLayout 如果选项卡可以放置在显示 tabMode 上 则它们必须是 app tabMode fixed else app tabMode scrollable 我怎样才能做到这一点 我不明白你
  • Android:透明活动问题

    最近 在我们的一款生产应用程序上 透明活动已停止工作 我的意思是它变成了黑色背景而不是透明背景 当我将活动的背景颜色设置为纯色 即红色 绿色等 时 它的应用不会出现问题 该问题可能是由于迁移到 AndroidX 引起的 但我没有这方面的证据

随机推荐

  • 以另一种形式运行过程

    我有一个表单 运行一个在 Outlook 中创建电子邮件并向其附加 pdf 的过程 它的记录源是不可更新的查询 该程序运行良好 我现在想从另一种形式运行该过程 但我不断收到一条消息 说它无法完成 因为记录源不可更新 新形式的编码为 Priv
  • 如何在 Android 手机启动时打开我的 Android 应用程序? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在启动时启动应用程序 https stackoverflow com questions 6391902 how to start an application on startup 我是 And
  • Oracle 函数:复制 wm_concat

    我目前正在 Crystal Reports 中从事一个项目 该项目拒绝使用未记录的函数 WM CONCAT 而该函数在 Oracle 10g 中是允许的 这里是WM CONCAT头信息 WM CONCAT p1 IN VARCHAR2 RE
  • 无法在 ASP.NET Zero 中启用实体历史记录

    我正在使用 ASP NET 零 项目版本 5 1 0和 NET Core 2 0 模板 我正在尝试为我的实体启用实体历史记录 以便我可以查看表中已删除的列值和旧的列值 实体类 Table TestingEntity Audited publ
  • 查找表中的重复行[重复]

    这个问题在这里已经有答案了 我有一个带有这样的表的小型应用程序 tr td img class DeleteButton alt delete src images delete icon png td td class toHide so
  • 如何删除mysql表中的数字字符?

    我有一张桌子 名称为 Actress 在 MySQL 中 我想从列 中删除所有数字字符name select from Actress limit 5 code name 11455 Hanshika Motwani 19 11457 Ka
  • memcached 是否在 Google App Engine 中跨服务器共享?

    在memcached网站上 它说memcached是一个分布式内存缓存 这意味着它可以跨多个服务器运行并保持某种一致性 当我在谷歌应用程序引擎中发出请求时 同一实体组中的请求很可能由同一服务器提供服务 我的问题是 假设有两台服务器为我的请求
  • 为什么 GLSL 的算术函数在 iPad 上与在模拟器上产生如此不同的结果?

    我目前正在寻找在 iOS 设备上运行的 OpenGL ES 2 0 片段着色器代码中的一些错误 代码在模拟器中运行良好 但在 iPad 上它存在巨大问题 并且某些计算产生截然不同的结果 例如我有0 0在 iPad 上和4013 17在模拟器
  • 将 csv 附加到电子邮件 xcode

    我在电子邮件视图中收到了一个有效的 csv 附件 问题是 当我在 iPhone 上打开 csv 时 它会将文件很好地显示在单独的列中 但如果我用 Excel 打开它 它就全部在一个字段中 我需要两列 我该怎么做 尝试用逗号分隔字段 但这不起
  • IPv4 到十进制不同的值?

    为什么 inet pton 和 inet addr 1734763876 的 IPv4 十进制值与使用这 2 个网站 1684366951 得到的值不同 struct sockaddr in sin inet pton AF INET 10
  • Java 类文件的创建是确定性的吗?

    当使用same JDK 即相同的javac可执行文件 生成的类文件总是相同的吗 是否会有差异 具体取决于操作系统 or hardware 除了JDK版本之外 是否还有其他因素导致差异 是否有任何编译器选项可以避免差异 差异仅可能存在于理论上
  • 查找 Active Directory 中特定用户所属的组/分发列表

    假设我在 OU Groups DC contaco DC com ct 我可以找到子 OU 中的所有组 但找到用户 bobdole 所属的所有组的唯一方法是查看每个组 看看他是否在 成员 字段中 不幸的是 当我查看用户 bobdole 时
  • 如何使div的宽度在两个div之间拉伸

    我当前的问题是我有三个 div 元素 一只向左漂浮 一只向右漂浮 一只在两者之间 我希望中心 div 自动拉伸到两个 div 之间可用宽度的最大宽度 HTML div div 1 div div div div 2 div div CSS
  • 控制何时调用静态构造函数

    在我的自定义属性的静态构造函数中 我在加载的程序集中搜索用我的属性修饰的所有类 并对它们执行一些操作 我希望在运行时尽快调用静态构造函数 最好是在执行之前static void Main 入口点 目前 只有在我对属性进行一些调用后才会调用它
  • 是否可以对 jQuery UI 对话框小部件的显示/隐藏方法进行更精细的控制?

    目前 在使用对话框小部件时 我似乎只能以最基本的形式使用效果 例如 以下将使用放置效果来显示和隐藏对话框 dialog dialog show drop hide drop 但是 drop 方法的默认值始终落在左侧 我真正想要的是让它下降到
  • spring security方法级注解应该应用在controller层还是service层?

    我一直在我的控制器方法上使用 Spring Security 和 PreAuthorize 我的理由是 我希望授权检查能够在一层中以可预测的方式进行 并且在请求中尽早进行 但是 我刚刚阅读了 spring security 3 文档 看到他
  • 遍历n*n矩阵的c程序

    我们有一个 n n 矩阵 例如我们取 n 4 矩阵如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 我们必须按顺序遍历它 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 我怎样
  • IOS Coredata UNIQUE 约束失败:

    我正在尝试将数据插入 coredata 但出现错误 例如 CoreData 错误 1555 唯一约束失败 ZSIDETABLENAME Z PK 设想 首先 从 appdelegate m 我将数据从 SQL 文件复制到文档目录的 sql
  • 如何从HWND获取窗口类名和ID?

    如何从HWND获取窗口类名和ID 我搜索了一下 但发现相反的更受欢迎 有什么想法吗 回答者Andreas https stackoverflow com questions 3246663 how to get the window cla
  • Android 屏幕关闭时识别音量按钮按下

    我试图识别用户何时在屏幕关闭时按下音量键来更新活动 根据我的阅读 广播接收器 我认为 在手机睡眠时不起作用 因此唯一的方法是使用 PARTIAL WAKE LOCK 保持活动运行 我的应用程序是一个基本应用程序 不应该使用太多电池 但我担心