Android LocalBroadcastManager登録ブロードキャストと直接registerReceiverの違い

1094 ワード

なぜラジオを使うの?ブロードキャストを使用すると、結合を解除できます.例えば、ユーザーのログインに成功した後、私たちはいくつかのページの更新内容を通知することができます.図の面のために、静的な方法の形式を呼び出すことによって、あるいは自分で観察者モードを作ることができます.静的メソッドは結合度が高く,初期化順序の問題によりバグが発生する場合がある.-新しいページがログインに成功した後に応答する必要がある場合は、新しいページにブロードキャストを登録するだけで、ブロードキャストを送信する内容を変更する必要はありません.コードの再利用性がよい.もちろん私が思わなかったことはたくさんあります.
コード登録ブロードキャストには2つの方法があります
  • は、LocalBroadcastManager.getInstance(MainPagerActivity.this).registerReceiver(mReceiver, filter);を使用してローカルブロードキャストを登録する.
  • registerReceiver(mReceiver, filter);を用いるブロードキャスト
  • を登録する.
    違いは、第1の方法で登録されたブロードキャストは、LocalBroadcastManager.getInstance(LoginActivity.this).sendBroadcast(bIntent);によって送信されたブロードキャストのみを受信することができる.システムブロードキャストまたは他のappのブロードキャストは受信されません.第2の態様で登録されたブロードキャストは、LocalBroadcastManager.getInstance(LoginActivity.this).sendBroadcast(bIntent);によって送信されたブロードキャストを受信できない.しかし、システム放送とsendBroadcast();から送信された放送を受信することができる.sendBroadcast();で送信されたブロードキャストについては、LocalBroadcastManagerを使用して登録して受信できるかどうかは、テストしていません.このような問題に遭遇したり、このような例を作ったことがある場合は、コメントエリアで話してください.