监听器和接收器有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

例如,我需要一个BroadcastReceiver来获取这些事件:

重新启动或关闭

屏幕打开或关闭

电池状态(电压,插入,温度)

物理按钮按下(相机,媒体等)

但我需要Listener来获取这些事件:

传感器事件的EventListener(加速度,磁场,方向,接近度,温度,光照水平等)

位置事件的LocationListener(网络位置,GPS)

为什么有两种完全不同的结构用于接收事件?

提问于
用户回答回答于

这两者之间有如此多的差异,他们对某事的回应是唯一的相似之处。

区别:

  • BroadcastReceivers接收Intents,而Listener基本上可以做任何事情,因为它没有明确的目的,它只是一个命名约定。例如,在开发者网站上搜索“BroadcastReceiver”,然后搜索“Listener”
  • BroadcastReceivers只收到一个非直接的意图广播,Listener被明确地调用。
  • 一个广播接收器是它自己定义的类,因为它有一定的目的(接收意图),而听众可以是任何东西-他们通常是一个interface和他们提供的,这样的回调可以从一个类进行到另一个。
  • BroadcastReceivers通常用于全局系统事件,特定事件的监听器(例如,位置传感器不应该每秒都提供位置更新,除非它具有某些内容,例如要发布的监听器。与屏幕截图意图相对比 - 这很重要,它会影响一切,所以应该向所有感兴趣的接收者播放)
  • BroadcastReceiver接收的事件通常是非连续事件(一次性),而Listener根据它们的作用可以用于持续更新(连续)。
  • 如果系统在清单中声明BroadcastReceivers,那么BroadcastReceivers可以由系统实例化,Listeners只能动态生成(所以通过代码)。
  • CPU /电源使用取决于两者的实现,特别是如上所述,听众可以是任何东西

有一件事我可以在一件事情上做,而不是另一件事情,特别是在屏幕关闭的情况下,我可以使用多少CPU来运行。

用户回答回答于

Broad Cast Receiver和Event Listener都用于事件监听。但Broad Cast接收器用于监听诸如BATTERY_CHANGED,BATTERY_LOW,BOOT_COMPLETED,CALL ETC和事件列表器更新等非常重要的事件。LOCATION CHANGED事件中的连续变化,专注于收益等。

扫码关注云+社区