BroadcastReceiver 사용 시 유의점

BroadcastReceiver는 onReceive가 처리되는 동안만 존재한다. 즉,

  • onReceive()가 처리되는 도중에 또다시 같은 인스턴스의 onReceive()가 호출되지는 않는다.
    • 매번 새로운 인스턴스가 생성된다.
  • 비동기처리를 통해 결과를 가져오는 작업을 못함
    • 비동기처리가 진행되는 도중 onReceive가 리턴하고나면 BroadcastReceiver 인스턴스는 이미 invalid 상태
    • API 11부터는 goAsync()를 통해 가능하긴 하다.
    • PendingResult를 가지고 있다가 다 완료되면 PendingResult.finish()를 호출해서 종료
  • 다이얼로그 같은 거 못 띄움
    • NotificationManager API를 사용하라
  • 서비스 바인드 못함
    • context.startService()로 처리하라. 또는 peekService로 참조.
  • 아니면 아예 BroadcastReceiver 말고 IntentService(API 3)를 사용하자.
  • onReceive는 UI thread에서 실행된다.
    • 오래 걸리는 작업 하면 안된다.

출처: https://developer.android.com/reference/android/content/BroadcastReceiver.html

Leave a Comment

Your email address will not be published. Required fields are marked *