问题标签 [alarmmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1478 浏览

android - 为什么这个带有待处理意图的 Android 警报会崩溃?

我有一段非常简单的代码,用于安排我的下一次同步操作。它在扩展 AbstractThreadedSyncAdapter 的 SyncAdapter 内运行——因此使用它的上下文。它为仅管理 SyncAdapter 的 BroadcastReceiver“MyService”启动的 PendingIntent。

我只是想安排它在 24 小时内重现。

日志输出:

0 投票
1 回答
3234 浏览

android - Android alarmmanager 不是很可靠

我在使用 Android 的 Alarmmanager 功能时遇到问题。

问题是等待超过一个小时左右的警报无法响起。

我的应用程序最初会像这样创建一个警报:-

当警报响起时,它会触发我的 RecieverHandler 类,特别是这个函数:-

然后这会启动一个名为 MessageDispatcher 的服务,这个函数被称为:-

这个函数从我的数据库中获取下一个闹钟时间,我确信它工作正常,然后它根据数据库中的日期设置一个新的闹钟,如下所示:-

这会为下一条消息创建警报。

我已经在很短的时间内对此进行了测试,它似乎可以工作,并且通过在手机中更改我的日期和时间已经在很长一段时间内对其进行了测试。它似乎成功发射。

然后,当此警报响起时,它会收到下一个警报响起并安排此时间。我几乎 100% 确定这些部件工作正常。

所以我只坚持一些关于为什么它不起作用的理论。

我认为这可能与我将手机与调试器断开连接有关,但在这种情况下,警报似乎在短时间内起作用。

所以我的主要理论是我正在创建的警报管理器在一定时间后被删除?如果这是真的,这是一个大问题,因为无论过去了多少时间,我都需要它工作。

非常感谢任何有助于确保我的警报仍然存在的帮助,谢谢。

0 投票
1 回答
3194 浏览

android - 向广播接收器发送新意图会从先前的意图中获得额外的值

我正在广播一个将由广播接收器接收的意图,因为应用程序仍在运行并且警报服务触发了新的意图,但接收器显示了以前的意图值。根据文档广播接收器在返回 onReceive() 后不再处于活动状态,因此接收器应显示由警报服务触发的下一个意图值,但它没有发生,任何人都可以告诉正确的方法。

这是从活动到广播意图:

这是广泛的接收器:

这里 toast 显示的 id 是由 alarmservice 的第一次广播发送的,即使从 alarmservice 触发了第二个意图(第二次警报响起)

0 投票
0 回答
530 浏览

android - Android:如果你使用AlarmManager来唤醒手机,你的任务完成后手机会进入休眠状态吗?

如果手机在您完成保持后立即进入睡眠状态,这让我想到了第二个好奇的问题

电话在变得低效之前多久可以醒来并入睡?(比一直呆着还浪费)

0 投票
1 回答
340 浏览

android - 以初始值启动服务

我正在尝试在我的笔记/待办事项应用程序中使用提醒/警报服务。我可以为特定项目设置提醒,警报触发并成功显示通知。

我的问题是我怎么Service知道哪个笔记/待办事项设置了特定的提醒。我希望用户能够单击状态栏中的通知并让触发它的项目出现。但我无法将该信息传递给 ,Service因为他们不接受Bundles来自PendingIntent.

我目前使用以下设置警报:

我只需要一种方法来发送_id我的数据库中的项目,以便我的服务可以在_id单击通知时启动该项目。

我希望我的问题不会太混乱。

谢谢!

0 投票
2 回答
1565 浏览

android - 安排 AlarmManager 进行定期后台数据同步的最佳位置在哪里?

我的 Android 应用程序将定期轮询服务器以检查数据。无论用户与应用程序的交互如何,我都希望这种轮询发生,类似于(在概念上)Gmail 和 Google 阅读器应用程序如何在后台同步数据。安装应用程序后,这些定期同步应该开始发生。我认为从内部安排警报Activity是要走的路,因为我不想等待用户打开我的应用程序。

在这种情况下,拨打电话的最佳做法是什么 AlarmManager.setInexactRepeating

我能想到的一些可能性是:

  • 扩展Application并在其中执行onCreate
  • 从清单Service中设置的 a 中进行调度。android:enabled=true
  • 侦听某些特定的广播消息,并从接收器中进行调度
0 投票
1 回答
2167 浏览

android - 使用后台服务开发 Activity 的最佳实践

我的应用程序有一个用于 UI 的 Activity 和一个用于后台轮询乐趣的 Service。好像是标准票价。

  1. AlarmManager 可以在不调用 Activity OnCreate 的情况下触发 Service Intent 吗?

  2. 将活动和服务放入不同的应用程序有什么好处吗?这会创建 2 个 apk 并使其无法作为一个应用程序放入 Market 吗?你能以某种方式将 2 个应用程序放入一个清单吗?

  3. 关于两人的交流:

- 如果活动和服务是同一个应用程序的一部分 - 我不能只在应用程序范围内存储公共对象(如用户对象)以供 2 共享吗?

- 似乎我什至不需要为 AIDL 操心——两者也可能在应用程序范围内相互之间存在弱引用——他们可以这样相互调用方法吗?或者他们应该使用某种观察者模式或广播监听器相互发布/订阅?

0 投票
1 回答
153 浏览

android - 如何不让我的警报自行其是?

我使用警报管理器每小时触发一次 IntentService。但是,最初警报会在用户运行应用程序时注册。问题是,当用户再次打开应用程序时,它会让管理器创建一个新服务运行,如果当前服务已经在运行,它们会因为数据库连接而相互绊倒,一切都死了!

另一个问题是警报服务完全停止。为什么?我认为无论如何警报都应该每小时响一次!

0 投票
1 回答
10221 浏览

android - Android AlarmManager 设置和重置警报的问题

我使用警报从服务器获取数据。我喜欢让用户选择启动和停止警报。这意味着我必须检查是否已经设置了警报。我发现一些代码告诉我是否已经设置了闹钟:

如果警报已经设置,我取消它,但如果它没有设置,那么我设置它(就像一个切换)

问题是这只能工作一次。第一次检查现有警报的上述代码将返回 null 表示没有警报,但是在我取消警报后,一旦它返回指向某物的指针但警报未运行。

这是设置警报的代码

这是取消警报的代码:

我是否要在取消警报后重置某些东西以使其 PendingIntent 消失。

0 投票
1 回答
1866 浏览

android - IntentService 和 AlarmManager 通信

警报管理器应该将 PendingIntent 发送到 IntentService 还是将其发送到广播接收器然后发出 startService() 针对未决意图更好?