LocalBroadcastManager vs Context.registerReceiver(),Context.sendBroadcast(Intent)和Context.unregisterReceiver()是一样的吗?

30 android broadcastreceiver

我在用 Context.registerReceiver(), Context.sendBroadcast(Intent) , and Context.unregisterReceiver()

但是当我看到这堂课时LocalBroadcastManager,它已经registerReceiver(), sendBroadcast(Intent) ,并且unregisterReceiver()喜欢上课了Context.

我糊涂了.我LocalBroadcastManager什么时候应该使用?他们一样Context吗?

问候,

谢谢...

A--*_*--C 51

正如其名称所示,LocalBroadcastManager是一种适用于您的应用程序的广播方法的实现.这有一些好处,最重要的是安全性,少一个值得关注的漏洞.在实施方面,有几点需要注意:

  • 此课程来自Android支持库
  • 方法调用必须以LocalBroadcastManager.getInstance([CONTEXT])where [CONTEXT]类的子类开头,例如Activity.
  • 当您使用此课程时,它纯粹适用于您的应用程序.使用它来注册接收器并进行系统范围的广播将失败.

因此,这个类与Context不同,它只是Context的接收器/广播方法的一个非常具体的,仅限应用程序的实现.如果您的听众绝对无法收听全球(系统范围)广播,并且您的广播不需要定位应用以外的任何内容,则应该使用它.

  • 如果我没记错的话,它也比普通的`BroadcastReceiver`更有效率. (4认同)
  • 注意LocalBroadcastManager无法发送即时广播 (2认同)