AlarmManager 在 Android 4.4.2 中停止工作(使用 SetExact())

2023-11-23

我在代码中设置了一个在特定时间响起的闹钟。
警报机制在 SDK 这是我设置闹钟的代码:

public void SetAlarm(Context context, Long executionTime)
{

    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmReciever.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    // Only one alarm can live, so cancel previous.
    am.cancel(pi);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        am.set(AlarmManager.RTC_WAKEUP, executionTime, pi);
    } else {
        setAlarmFromKitkat(am, executionTime, pi);
    }
}

因为我使用的是设置闹钟Service I use GetApplicationContext()作为上下文。

The onReceive() code :

@Override
public void onReceive(Context context, Intent intent) {
    for (SchedulerListener listener : listeners) {
        listener.fetchAndRebuildNotification();
    }
}

这是声明BroadcastReceiver :

<receiver 
        android:name="com.SagiL.myAppName.BroadCastReceivers.AlarmReciever" />

回调在服务中运行一个方法(当警报应该触发时,该方法仍然存在,注意它不会启动警报)。

这整件事是一个library它在我的应用程序中使用,并且我以相同的方式声明接收器。

有时警报会触发一次,但大多数情况下根本不会触发。

有人经历过这样的事情吗?
我不敢相信这对于 SDK 19 来说很常见,因为很多应用程序都在使用AlarmManager如果很常见,它们也会破裂。


我的应用程序也遇到了类似的问题。我发现使用0将 id 添加到getBroadcast(...);效果不佳并引发了许多问题。

尝试改变id from 0到警报的真实ID。

From:

PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

To:

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

AlarmManager 在 Android 4.4.2 中停止工作(使用 SetExact()) 的相关文章

随机推荐

  • Protobuf 不序列化默认值

    我正在为 python 使用 Protobuf 我一直在尝试使用默认值 但每次运行 SerializeToString 时我什么也得不到 例如 这是我的 proto 文件对象 message Test optional string lol
  • 向 MediaWiki 添加 CSS 或 JS 文件?

    我一直在关注 mediawiki org 上的一些教程 但我没有成功 我需要添加一个新的 CSS 或 JS 代码 以便在我的所有 wiki 中可用 基本上是因为我需要添加一些 div 标签 你们能帮我吗 感谢 您可以在页面名称中编辑 wik
  • 我是否被迫使用 pthread_cond_broadcast (通过 pthread_cond_signal)来保证*我的*线程被唤醒?

    在将一些 QT GUI 线程 pthread 线程 与一些 C 代码连接的上下文中 我偶然发现了以下问题 我启动了 QT Gui 线程 并且在我的 C 线程恢复其路径之前 我需要确保所有QT Gui 线程内的图形对象已被构造 并且它们是有效
  • 如何识别 System.Reflection 中的匿名方法

    如何通过反射识别匿名方法 查看方法的属性 看看该方法是否被修饰过编译器生成的属性 匿名方法 以及其他对象 例如自动实现的属性等 将添加此属性 例如 假设您的班级有一个类型 匿名方法将位于 Type myClassType typeof My
  • 如何“运行”主包中包含多个文件的项目?

    我有一个文件main包名为main go 因为代码不可重用 所以我想将部分代码放在不同的文件中 但在同一个包中 我如何分割内容main go分成多个文件而不创建单独的包 我想要这样的目录结构 ls foo output main go ba
  • jquery firefox stopPropagation()

    我将两个事件处理程序绑定到 keydown 上的输入字段 如果已按下 Enter 键 则第一个事件处理程序需要停止事件的传播 以便它不会影响第二个事件处理程序 我这样做是这样的 if jQuery browser msie event ca
  • C# 中的点类

    我对 C 还很陌生 我正在尝试做一些事情 但没有取得太大成功 我正在尝试使用该类Point 有坐标的那个 这是代码 using System using System Collections Generic using System Lin
  • Java 中带有命名空间的 XPath

    我想获取标签之间的所有内容 但由于 urn 命名空间 我不知道如何执行此操作
  • 打开资源管理器 - java

    在我的 java swing 应用程序之一中 我动态打开 Windows 共享文件夹 现在我想使用资源管理器打开它 所以你们能帮我解决这个问题吗 如果您使用的是 Java 6 最好的方法是使用Desktop Desktop getDeskt
  • 首先是模板实例化还是宏扩展?

    让我们考虑一个像这样的代码示例 它只是一个结合的人为示例define and template 不要寻找任何意义它 define COMMA template
  • 理解错误:特征“futures::future::Future”没有为“()”实现

    这个问题是关于如何阅读 Rust 文档并提高我对 Rust 的理解 从而了解如何解决这个特定的编译器错误 我读过东京文档并尝试了许多examples 在编写自己的代码时 我经常遇到我不理解的编译器错误 并且经常发现我可以修复代码 但不理解w
  • 从另一个线程或进程更新 Gtk.ProgressBar

    我有一个带有进度条的 GUI 它应该显示第二个线程所做的工作的进度 我希望有一个事件 线程可以在工作的每一步立即发送到 GUI 进度条 但我不明白这是如何做到的 Python本身提供了一个Event用于线程情况的类 但它会阻塞 GUI 主线
  • VectorAssembler不支持StringType类型scala Spark Convert

    我有一个包含字符串列的数据框 我计划将其用作使用 Spark 和 scala 的 k 均值的输入 我使用以下方法转换数据帧的字符串类型列 val toDouble udf Double String toDouble val analysi
  • 如何根据url hash执行js函数 url#nameoffunction

    我看到一些网站根据 URL 中的内容执行 JavaScript 函数 例如 当我访问时http domain com jobs test 然后网站执行基于 test的函数 我可以通过检查 location href 来做到这一点 但是有更好
  • 通信链路故障 最后发送到服务器的数据包是在 1 毫秒前。

    我尝试连接到mysql database但我失败了并且显示了这个错误 Communications link failure Last packet sent to the server was 1 ms ago 这是我的代码 任何人都可以
  • 如何将 xsi:type 定义为 XML 模式中的属性?

    我有一个 XML 我想为其编写架构定义 问题是我不知道如何将 xsi type 定义为属性 这是 XML 元素
  • 如何在.net中查找当前线程的最大堆栈大小?

    如何找到当前线程的最大堆栈大小 我在从 MMC UI 而不是从 Powershell 命令行 控制台 执行函数时遇到堆栈溢出异常 所以我猜测它与 UI 线程中分配的默认堆栈大小与 Powershell 命令行 控制台 中分配的默认堆栈大小有
  • gridview rowCommand 中的行索引

    只是想将值从变量转移到另一个变量 protected void gvVariableDetail RowCommand object sender GridViewCommandEventArgs e if e CommandName Ed
  • XNA 和 GUI 控件(例如 xaml 和 xna)

    有没有办法在 xna 中获取支持边距等的文本框 标签和其他 wpf 控件 并根据窗口大小进行伸缩 你可能会给CeGui a shot 如果您的游戏需要高级 GUI 功能 CeGui 可能正好适合您 撇开市场因素不谈 这是一个非常好的 GUI
  • AlarmManager 在 Android 4.4.2 中停止工作(使用 SetExact())

    我在代码中设置了一个在特定时间响起的闹钟 警报机制在 SDK 这是我设置闹钟的代码 public void SetAlarm Context context Long executionTime AlarmManager am AlarmM