0

我必须多次执行一项任务,任务是广播一个意图,该意图将被不同的应用程序拦截。让我们说从 App SenderReceiver。在 Receiver 应用程序中接收意图工作正常,我已经测试并保证:

我是怎么做的,我在 Sender 应用程序中创建了一个广播接收器,动作为 SENDER_ACTION。frequency我用这个动作创建了一个意图,用 key和 value设置了一个额外的4。从中获取 PendingIntent 并设置 10 秒的警报,并触发此意图。

想法是发送者应用程序将收到此意图,将向接收者应用程序触发所需的意图,然后将频率值减少 1,再次将其设置为意图,创建待处理的意图和警报并再次触发。

因此,理想情况下,这个频率计数器应该达到 0 并且进程应该终止。

我可以看到,在设置降低的频率值时,它正在发生(在日志中),但是当我收到相同的未更改值时。

我怀疑挂起的意图实例会一次又一次地被触发。有人可以帮助我为什么会发生这种情况?

4

1 回答 1

5

如果我不得不猜测——我猜,因为你没有提供源代码——那是因为你没有将正确的标志传递给getBroadcast()(或者你PendingIntent用来获取PendingIntent实例的任何工厂方法)。请记住,默认情况下,Android 会缓存PendingIntent对象并将重用它们,而它们的内部Intent额外内容未修改。考虑FLAG_UPDATE_CURRENT作为最后一个参数传递给getBroadcast().

于 2013-01-12T13:58:36.043 回答