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