Android AlarmManager.set(...):电池电量低时从未收到通知

2024-01-05

我正在尝试使用 AlarmManager 在我的应用程序中安排延迟检查。 (具体来说,用户接近某个位置 N 分钟后,我想检查他们是否仍然在那里,如果是,则向他们发送通知。)

我通过检查他们是否已进入我的位置更新接收器中的区域来实现此目的,如果他们已进入,则按如下方式进行安排:

Intent geofenceIntent = new Intent(context, GeofenceReceiver.class)
// ...intent contents not important...
PendingIntent pi = PendingIntent.getBroadcast(context, 0, geofenceIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Calendar c = Calendar.getInstance();
c.add(Calendar.SECOND, getGeofenceDelaySeconds());
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
Log.v("Scheduling notification check for "+c.getTime());

当电池电量较高时(例如 50%),一切都会变得非常顺利。但是当它很低时(比如 10%),我会得到位置更新,他们看似成功地安排了警报,但该警报实际上从未触发!

是什么赋予了? Android 在尝试节省电量时是否会停止发送某些类型的更新?我该如何解决这个问题(在延迟期间没有实际保持我的应用程序处于活动状态,这会导致明显的电池寿命问题)?


原来这和实时时钟的使用有关。

虽然我找不到它引用的文档(它不在 AlarmManager 中),这个 StackOverflow 答案 https://stackoverflow.com/a/15400014/225176建议AlarmManager.RTC_WAKEUP如果手机处于省电模式,则不会触发警报. AlarmManager.ELAPSED_REALTIME_WAKEUP警报似乎没有遇到这个问题,所以我能够通过切换到来解决这个问题:

Intent geofenceIntent = new Intent(context, GeofenceReceiver.class)
// ...intent contents not important...
PendingIntent pi = PendingIntent.getBroadcast(context, 0, geofenceIntent, PendingIntent.FLAG_UPDATE_CURRENT);

long millis = SystemClock.elapsedRealtime() + 1000 * getGeofenceDelaySeconds();
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, millis, pi);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android AlarmManager.set(...):电池电量低时从未收到通知 的相关文章

  • 浓缩咖啡测试失败

    我正在 Android 中进行一些 Espresso 测试 测试失败并出现以下错误 java lang ClassCastException androidx fragment app testing FragmentScenario Em
  • 与其他布局相比,约束布局是否昂贵?

    当我意识到 ConstraintLayout 有 更好的布局拖放 通过更好的命名 top toBottomOf 更好地查看相对设置 更好的布局结构与比率和百分比指南 还有更多不能在这里说明或者我只是不知道 我一直想不断地使用它 因为它太舒服
  • 发生存储异常。无法在firebase中上传图片

    在我能够更改图像并将其上传到 firebase 之前 这段代码就可以工作 但现在我突然收到此错误 我不知道问题是什么 public class SettingsActivity extends AppCompatActivity priva
  • 在屏幕上随机生成一个圆圈并将其设为绿色或红色

    所以我一直在尝试制作一个游戏应用程序 它可以在 Android 屏幕上随机显示带有文本的红色按钮或带有文本的绿色按钮 如果有人可以帮助我 我将不胜感激 另外 如果有人知道如何做到这一点 我想慢慢地产生更快的酷优势 谢谢 SuppressLi
  • 为网络和/或持久存储序列化 Android Bundle?

    我需要序列化一个全面的应用程序 游戏 状态 以便通过网络传输或保存到磁盘并在以后检索 当然 捆绑包用于在多个用例中保存 恢复状态 因此使用它们将是理想的选择 但是 由于某种原因 Bundle 不可序列化 寻找解决方案只发现了将 Bundle
  • 如何在 android-studio 0.3.6 中运行 Gradle 1.9?

    我只是花了一些时间尝试将现有的 android studio 项目从 gradle 1 8 迁移到 gradle 1 9 Final 昨天发布 但失败了19th Nov 我在这里阅读了大多数其他与 gradle 相关的帖子 但没有一个对我有
  • android studio 底部工具栏的“运行”选项卡消失了

    Android Studio 底部工具栏中曾经有一个 运行 选项卡 但该选项卡不再显示 怎么把它带回来 请检查下图以了解它消失之前的位置 Run 选项卡曾经位于 TODO 选项卡之前的红色圆圈中 查看 gt 工具窗口 gt 运行 Or us
  • 如何知道点击的widget id?

    我已经实施了一个widget与ImageButton and a TextView That ImageButton启动一个activity当它被点击时 这activity使用用户在活动上写入的内容更新小部件文本EditText 现在的问题
  • 如何从debug.keystore文件获取MD5?

    我使用一些命令来获取 MD5 私钥debug keystore文件 但实际上我得到的是 SHA1 私钥而不是 MD5 我不知道如何获得MD5 这是我使用的命令 keytool list alias androiddebugkey keyst
  • 来自外部 XML 的 Android 本地化

    是否可以使用从服务接收到的 XML 在运行时翻译 Android 应用程序 如果可能的话 请有人指出我正确的方向 谢谢 Warning 我读到的所有内容都表明 让您的应用程序更改语言不是一个好主意 因为 Android 框架不支持它 并且可
  • 我可以使用“导入 com.facebook.FacebookSdk;”使用 Facebook SDK 3.23.1?

    在我的 app build gradle 文件中 我有compile com facebook android facebook android sdk 3 23 1 在我的 BaseActivity java 文件 其中有 public
  • BluetoothLeScanner 服务内部问题

    Update从Android 10以上我认为你需要ACCESS BACKGROUND LOCATION权限 因此 如果此代码在最新的 Android 版本上不起作用 就是针对此问题的 ACCESS BACKGROUND LOCATION 受
  • 如何使用 onSearchRequested() 调用搜索对话框

    我正在尝试实现搜索对话框 但无法显示活动中的搜索 我在清单文件中定义了主要活动 此活动向用户显示了他们必须从中选择的选项列表 选项之一是 搜索 选项
  • 使用startActivityForResult,如何获取子活动中的requestCode?

    我有四项活动 即 A B C 和 D 我的情况是A将通过startActivityForResult启动活动B startActivityForResult new Intent this B class ONE 在另一种情况下 我将使用不
  • NoClassDefFoundError:com.google.firebase.FirebaseOptions

    我继续得到NoClassDefFoundError在我正在使用的其他测试设备 4 4 2 上 但在我的测试设备 Android 5 1 上运行良好 我尝试了用谷歌搜索的解决方案 但似乎没有任何效果 我正在使用 Firebase 实时数据库
  • Android框架结构与MFC/Win32结构的比较?

    我为 Android 和 Windows 进行开发 使用 MFC 有时使用 win32 昨天我随意比较了这两个框架 它们显然非常非常不同 因此 Windows 开发与 Android 开发有很大不同 我想知道人们认为 Android 这样的
  • UnsupportedOperationException:特权进程中不允许使用 WebView

    我在用android sharedUserId android uid system 在我的清单中获得一些不可避免的权利 从 HDMI 输入读取安卓盒子 http eweat manufacturer globalsources com s
  • 改造Android基本且简单的问题

    我的服务器返回简单的 Json 结果 如下所示 message Upload Success 我正在尝试将结果放入改造模型类中 public class MyResponse SerializedName message String me
  • 在Android的activity中调用onResume

    在活动的过程中通过调用 this OnResume 强制 onResume 事件可以吗 或者我应该实现另一个由 OnResume 和第一个成员调用的过程 实现在您的重写中调用的另一个过程onResume 后者不打算由您调用 它是一种方便的方
  • onTouch 给出奇怪的触摸点 Android

    我正在做的事情非常简单 我以前做过 但现在它没有按我的预期运行 无论如何 让我简要解释一下我正在尝试做什么以及我得到了什么 设想 我有一个RelativeLayout其中一个ImageView已放置 现在我设置touchlistener像这

随机推荐

  • 使用未解析的标识符“GGLContext”

    我正在将 Google Sign In 集成到我的 ios Swift 应用程序中 我按照谷歌开发者页面上的官方说明进行操作 https developers google com identity sign in ios sign in
  • 创建状态项 - 图标显示,菜单不显示

    在基于文档的项目中 我试图创建一个状态菜单 我有一个构建状态栏的单例类 并且我从应用程序委托启动它 如您所见 当我运行它时 我没有收到任何错误 但只有状态栏的图像 但没有下拉菜单 我在 IB 中创建了菜单 我搞砸了什么 Delegate i
  • 使用 Swift 计算 SpriteKit 中的 delta

    我正在尝试通过重构我的一款旧游戏来快速学习 我需要重写我的update计算增量时间的方法 这段代码works但很丑 我该怎么办properly重写这个 import SpriteKit class GameScene SKScene var
  • Flot:如何在条形图中设置数字样式?

    我在用着流程图 http www flotcharts org 它是插件Flot barnumbers Demo http joetsoi github io flot barnumbers 显示图表 我需要在栏中显示数字 它可以工作 不幸
  • FPDF 在每个 A4 尺寸页面的页脚处获取页码

    我正在使用 FPDF 创建 PDF 报告 现在 如何在页面底部的报告的每一页上生成页码 以下是生成 2 页 PDF 的示例代码
  • Scala 宏检查树的匿名函数

    我刚刚开始使用宏 感觉我错过了一些非常明显的痛苦 我想检查 AST 中是否有传递给我的宏的匿名 lambda 函数 最终我想对它做一些事情 但我在第一个障碍上就失败了 我的代码如下所示 object Test extends App doI
  • 错误:DisplayListCanvas.throwIfCannotDraw 处的 RuntimeException

    我的应用程序在牛轧糖模拟器和许多设备上运行得很好 但我在 google play crash reports 中发现了这个异常 我不知道为什么会发生这种情况 该异常仅在牛轧糖设备 上引起 例外 java lang RuntimeExcept
  • 父变量在 ng-content 内不起作用

    Intro 我正在研究 ng2 组件 其结构如下
  • 在 C# (ASP.net) 中删除重复查询字符串的最快方法是什么

    我遇到一个问题 该公司使用业务跟踪系统来捕获用户的首次访问并将他们重定向到他们试图访问的页面 但附加了引用 URL 现在 由于引用网址包含该人试图访问的网址 不要问为什么 我不知道 它会导致我拥有每个值的重复项 所以参观这个 home as
  • 根据运输类别有条件地隐藏 WooCommerce 运输方式

    使用 WooCommerce v3 2 4这个网站 这里 https mur hatcherydev xyz WP v4 9 和 11 种运输类别为超重 超大且适用统一费率的产品 20前往加拿大和 25到美国 所有其他产品均采用统一费率运输
  • 如何垂直对齐 span 标签内的内容?

    如何使 x 在跨度的中间垂直对齐 foo height 50px border solid black 1px display inline block vertical align middle span class foo x span
  • 如何将 scons 指向安装在我的主目录中的不同编译器?

    我尝试编辑 SConstruct 以指向不同的 gcc 编译器 但它似乎总是使用 usr bin gcc 和 usr bin g 中定义的编译器 env DefaultEnvironment env CC home aaron devel
  • 我如何利用 NSCoding 将对象转换为 NSDictionary ?

    我有一个实现 NSCoding 的 Objective C 类 我需要以 NSDictionary 的形式返回此类实例的表示形式 其中键是属性名称 值是属性值 如何在 Objective C 中进行这种转换 NSObject 有一个方法di
  • NumPy:取消排序/撤消反向/降序排序

    我可以对 numpy 数组进行就地反向排序 降序排序 但我还需要能够稍后对其进行取消排序 撤消 给出一个未排序的例子 a np array 1 2 1 3 2 0 I tried i a 1 argsort argsort BAD atte
  • MySQL 中使用 WHERE EXISTS 进行 DELETE 查询[重复]

    这个问题在这里已经有答案了 我正在使用 MySql 中的一张表执行 where contains 查询 它与 SELECT 一起工作正常 但当我尝试执行 DELETE 而不是 SELECT 时失败 如何使用删除执行相同的查询 提前谢谢了 s
  • PreparedStatement,使用一个参数多个“?”

    我有一个插入如果不存在查询 如下所示 BEGIN IF NOT EXISTS SELECT FROM tbl sampleTable WHERE name or subject BEGIN INSERT INTO tbl sampleTab
  • Windows Azure AppFabric 服务是否已停止?

    我正在使用 Azure Microsoft 提供了一项与云中的 AppFabric 配合使用的服务 网上有很多关于云中此服务的文章 但我在 Azure 中没有找到它 您可以告诉我此服务是否是重命名了 这就是为什么我找不到或者它已经停产了 服
  • 为什么我的 .tfignore 文件不忽略我的包文件夹

    我正在使用 Visual Studio 2013 Pro 和 Team Foundation Server 2013 我有一个包含以下行的 tfignore 文件 packages
  • 激活和停用调用功能

    我尝试使用 C 语言延迟 Unity 中的函数 通过使用Invoke 我实现了当光标移动到某个区域时添加延迟 但是 现在我需要取消Invoke当光标从该特定区域移开时 这个想法是 当我不小心将光标移动到该区域时 我可以取消那里调用的任何函数
  • Android AlarmManager.set(...):电池电量低时从未收到通知

    我正在尝试使用 AlarmManager 在我的应用程序中安排延迟检查 具体来说 用户接近某个位置 N 分钟后 我想检查他们是否仍然在那里 如果是 则向他们发送通知 我通过检查他们是否已进入我的位置更新接收器中的区域来实现此目的 如果他们已