我必须多次执行任务,任务是广播一个意图,该意图将被另一个应用程序拦截。让我们说从应用发件人到接收器。 在Receiver应用程序中接收意图工作正常,我已经测试并保证:
我是怎么做的,
我在Sender app中创建了一个广播接收器,其中包含动作SENDER_ACTION。
我使用此操作创建了一个intent,使用键frequency
和值4
设置了一个额外值。
从中获取PendingIntent并设置10秒的警报,并触发此意图。
想法是发送方应用,会收到此意图,会向RECEIVER应用启动所需的意图,然后将频率值减少1,再次将其设置为意图,创建待定意图并再次发出警报和火灾。
因此,理想情况下,此频率计数器应达到0并且进程应终止。
我可以看到,在设置频率的减少值时,它会发生(在日志中),但是当我收到相同的未更改值时。
我怀疑待处理的意图实例一次又一次地被触发。 有人可以帮助我,为什么会这样?
答案 0 :(得分:5)
如果我不得不猜测 - 我这样做,因为你没有提供任何源代码 - 这是因为你没有将正确的标志传递给getBroadcast()
(或者你在{{}上使用的任何工厂方法1}}获取PendingIntent
实例)。请记住,默认情况下,Android会缓存PendingIntent
个对象,并会重复使用它们,而其内部PendingIntent
个附加内容未经修改。考虑将FLAG_UPDATE_CURRENT
作为Intent
的最后一个参数传递。