어플리케이션간에 통신이 필요할때 쓰기도 하고 OS자체에서 내려주는 Receiver 이벤트를 수신해야 할 경우에 사용하기도 합니다.
장점이라고 한다면 어플리케이션이 SIG9으로 kill 되지 않은 이상 어플리케이션이 실행중이지 않아도 이벤트 수신이 가능하다는 점이 있지요. 3rd party 앱끼리 통신 하는 경우가 아니라고 하면 service를 사용해도 되지만 간단한 메시지 정도 통신하는데에는 broadcastReceiver를 사용하는것이 좋습니다.
어느상황이라고 물으신다면 일반적으로 BOOT_COMPLETE라는 OS 에서 부팅이 완료되면 broadcast 해주는 이벤트가 있는데 이 이벤트때 앱이 자동으로 실행 되도록 하는 부분이 있을 수도 있고 또는 네트워크 상태 변화 이벤트를 받아야하는 상황에서도 쓰일 수 있습니다.
저같은 경우는 통신 프로그램을 만들때 통신하는 부분에서 주기적으로 통신상태를 broadcast 해주고 이를 필요로 하는 UI화면이 create 되었을때 Receiver를 정의하여 이벤트를 받아 프로그레스로 표시하는 경우로도 사용한 적이 있습니다.