LocalBroadcastManager 的示例

BroadcastReceiver 基本上是一种通过 OS 中继 Intent 以执行特定操作的机制。一个经典的定义是

“广播接收器是一个 Android 组件,允许你注册系统或应用程序事件。”

LocalBroadcastManager 是一种在应用程序进程中发送或接收广播的方法。这种机制有很多优点

  1. 由于数据保留在应用程序进程中,因此数据不会泄露。
  2. LocalBroadcasts 的解析速度更快,因为普通广播的解析在整个操作系统的运行时都会发生。

LocalBroastManager 的一个简单示例是:

SenderActivity

  Intent intent = new Intent("anEvent");
  intent.putExtra("key", "This is an event");
  LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

ReceiverActivity

  1. 注册接收器
`LocalBroadcastManager.getInstance(this)`.registerReceiver(aLBReceiver,
              new IntentFilter("anEvent"));
  1. 调用接收器时执行操作的具体对象
private BroadcastReceiver aLBReceiver = new `BroadcastReceiver()` {
    @Override 
    public void onReceive(Context context, Intent intent) {
        // perform action here.
    } 
};
  1. 当视图不再可见时取消注册。
@Override 
protected void `onPause()` { 
    // Unregister since the activity is about to be closed. 
    `LocalBroadcastManager.getInstance(this)`.unregisterReceiver(aLBReceiver);
    super.onDestroy(); 
}