38

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

但是当我看到这个类时LocalBroadcastManager,它已经registerReceiver(), sendBroadcast(Intent) ,unregisterReceiver()喜欢了Context

我很困惑。我应该什么时候使用LocalBroadcastManager?他们一样Context吗?

问候,

谢谢...

4

1 回答 1

54

LocalBroadcastManager 顾名思义,是仅对您的应用程序可用的广播方法的实现。这有一些好处,最大的好处是安全,少了一个需要注意的洞。在实施方面,有几点需要牢记:

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

所以这个类与 Context 不同,它只是一个非常具体的、仅限应用程序的 Context 接收器/广播方法的实现。当您的听众绝对没有必要收听全局(系统范围)广播并且您的广播不需要针对您的应用程序之外的任何内容时,您应该使用它。

于 2012-11-28T03:42:20.860 回答