我可以在我的Android应用程序中只使用一个BroadcastReceiver吗?

时间:2012-08-15 09:20:12

标签: android

我对BroadcastReceiver感到困惑。 作为标题,我认为我的应用程序中不需要另外一个BroadcastReceiver。

或者,如果我在我的应用程序中使用一堆BroadcastReceiver,有什么问题吗? 我认为它会影响我的操作系统执行内存和性能,我是对的。

感谢您的时间和热心。

3 个答案:

答案 0 :(得分:1)

一切由你决定。对于不同的BroadcastReceiver集,您可以有多个intent-filter,或者使用单个广播接收器来处理所有的intent-filters。

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

就像我说的,一切都取决于你。如果您有大量的intent-filters并且希望正确处理代码(基于它执行的任务的类似分类),那么请选择多个接收器。否则,在单个接收器中处理少量滤波器很容易且合乎逻辑。

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

提示:尝试在任何需要执行繁重工作的地方引入Threads:)

答案 1 :(得分:1)

认为班级应该承担一项责任。因此,如果您的BroadcastReceiver同时处理SMSCALL意图,请考虑使用多个接收器。

答案 2 :(得分:0)

您可以在应用中声明任意数量的BroadcastReceivers。如果在您收到的每个广播中,您将开始进行一百万次长时间运行的后台操作。

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

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

修改 我想如果你自己做一点测试会更容易。

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

这些是BroadcastReceiver可能接收的所有不同操作。因此,它只是使一些应用程序更简单,更有条理,实现多个接收器,每个不同类型的操作一个接收器。或者它可能只接收两个非常相似的动作,并且在一个接收器中完成所有操作更简单。

有意义吗?