是否可以多次触发一个意图?

时间:2011-09-20 23:08:05

标签: android broadcastreceiver android-intent

我有一个执行数据库调用的服务。该服务接收具有意图的请求,并且当数据库调用完成时,它广播“更新完成”意图,指示呼叫完成。

有时数据库已经填充了缓存数据,在这种情况下我想立即广播一个“更新完成”意图,表明活动应该显示缓存数据,然后一旦数据库更新了另一个“更新”完成“意图表明活动应加载更新的数据。

问题是活动从未收到过第二次广播。这是因为我正在重新使用已被触发的相同意图对象吗?

以下是代码:

if (scheduleDatabase.populated()) {
    intent.putExtra("fromCache", true);
    getApplicationContext().sendBroadcast(intent);
}

scheduleDatabase.update();
intent.putExtra("fromCache", false);
getApplicationContext().sendBroadcast(intent);

更新: 如果我评论其中一个意图广播,另一个总是触发并被接收。 此外,如果我使用相同的操作字符串创建两个intent对象并单独触发它们,则活动只会收到第一个。我还不清楚对方是否被解雇但未被接收,或者它是否从未发射过。

2 个答案:

答案 0 :(得分:2)

事实证明,我对意图的问题是我代码的不同区域中出现更大问题的症状。在解决了这个问题后,意图开始按照我的预期进行射击和接收。所以,为了回答我自己的原始问题,是的,可以多次触发一个单一的意图。

答案 1 :(得分:0)

我遇到了类似的问题。是的,第二个意图是覆盖第一个意图。我的解决方法是在BroadcastReceiver中创建一个新的Intent。您可以访问相同的上下文,并可以在附加内容中传递数据。