首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么BroadcastReceiver收到两个相同的广播

为什么BroadcastReceiver收到两个相同的广播
EN

Stack Overflow用户
提问于 2012-11-21 17:53:15
回答 2查看 1.3K关注 0票数 2

我正在尝试使用BroadcastReceiver从服务接收新消息。但是BroadcastReceiver总是会收到两次广播...接收器代码:

代码语言:javascript
复制
private class RecentBroadcastReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        Bundle messageBundle = intent.getExtras();
        IChatCSMessage message = (IChatCSMessage) messageBundle.get("message");
        String sender = message.getSender().getUserId();
        addRecentBuddy(sender.trim());
        recentBuddyAdapter.notifyDataSetChanged();
        allMessages.get(sender).add(message);
        Log.i("RECENT_RECEIVER", "RECEIVING MESSAGE:" + message.getMessage());
    }
}
public void initReceiver() {
    IntentFilter myIntentFilter = new IntentFilter();
    myIntentFilter.addAction("com.ichat.message");
    recentBroadcastReceiver = new RecentBroadcastReceiver();
    registerReceiver(recentBroadcastReceiver, myIntentFilter);
}

广播是:

代码语言:javascript
复制
Intent intent = new Intent("com.ichat.message");
intent.putExtra("message", message);
IChatClientService.this.sendBroadcast(intent);

有谁可以帮我?

EN

回答 2

Stack Overflow用户

发布于 2012-11-22 07:10:15

您确实没有提供任何证据来证明在这两种情况下,意图都包含相同的扩展数据。我之所以这样说,是因为a)您从不记录传入的操作,b)您不能通过调用getStringExtra()获得带有键"message“的扩展数据(如果扩展数据的内容确实是一个字符串),以及c)您没有向我们提供logCat清单。

我建议使用以下步骤进行调试:

  1. 为传入意图操作调用Log.i
  2. 调用Log.i以获取"message“键的传入意图的值。
  3. 发布结果。
  4. 发布代码,该代码在发送广播意图

时准确显示"message”的类型和值< code >G29

简而言之,您的BroadcastReceiver正在接收两个意图,大概都带有动作"com.ichat.message“。如果广播只在您的应用程序中的一个位置,则该位置将被访问两次。

票数 0
EN

Stack Overflow用户

发布于 2013-09-10 00:18:19

这是一个常见的错误,您可能会将广播接收器放入manifest.xml,其意图定义如下:

代码语言:javascript
复制
      <receiver android:name="RecentBroadcastReceiver">
        <intent-filter> 
            <action android:name="com.ichat.message" /> 
        </intent-filter> 
    </receiver>

并在您的代码中创建了一个,如示例所示。这实际上是创建两个意图过滤器,因此您可以删除xml中的意图过滤器,并且您应该只看到一个广播。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13490521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档