2012-08-15 45 views

回答

1

这一切都取决于你。对于intent-filter的不同组,您可以有多个BroadcastReceiver,或者使用单个广播接收机处理所有意向过滤器。

通常最好根据一组意图过滤器来定义不同的接收器,这些过滤器应该为相关的任务组提供功能。

就像我说的,它完全取决于你。如果你有一大套意图过滤器,并且你希望你的代码得到正确的处理(根据它所执行的类似的任务分类),那么去多个接收器。否则,它容易和合乎逻辑地处理单个接收器中的几个滤波器

此外,应用程序的性能不会受到阻碍,因为它取决于接收器中的任务执行情况,而不是接收器或过滤器的数量。

提示:尝试引进Threads无论你预计将进行一些繁重的:)

+0

谢谢Waqas ~~这是我的答案。 – AmyWuGo 2012-08-15 09:30:35

0

您可以在应用程序上声明尽可能多的BroadcastReceivers。它会影响你收到的每一个广播开始做一百万次长时间的后台操作。

但你计划的应用程序真的需要所有这些接收器吗?

有一些API以编程方式启用/禁用您声明的接收器,也可能是一个不错的选择。

编辑: 我想如果你自己做一点测试会容易一些。

  • 在您的Eclipse上,创建一个新的Android项目。
  • 创建一个扩展BroadcastReceiver的类。
  • 保存并关闭它。
  • 现在进入清单,应用程序选项卡,应用程序节点,添加按钮,添加接收器。
  • 等待Eclipse搜索您的应用程序并找到您刚创建的应用程序。
  • 接收器内部放置了一个新的意图过滤器。不需要名字或任何东西。
  • 里面的过滤器把一个行动。
  • 在操作名称中,选中下拉菜单。

这些都是BroadcastReceiver可能收到的所有不同操作。所以它只是简化和组织一些应用程序来实现多个接收器,一个接收器用于每种不同类型的操作。或者,也许它只会收到两个非常类似的动作,并且在一个接收器中完成它更简单。

它有道理吗?

+0

谢谢Bundius.I窃取不明白为什么人们在他们的应用程序中使用更多的BroadcastReceiver? – AmyWuGo 2012-08-15 09:28:29

+0

Budius,谢谢! – AmyWuGo 2012-08-20 05:33:22

1

它认为类应该有一个责任。因此,如果您的BroadcastReceiver同时处理SMSCALL意图,则考虑拥有多个接收器。

相关问题