BroadcastReceiver 사용 시 유의점

Reading time ~1 minute

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

kiwi campus

가족여행차 샌 프란시스코에 갔다가 오랜만에 버클리 교정을 구경하러 갔다.돌아다니다보니 Sather gate 근처의 분수대 주변에 이런 게 돌아다니고 있었다.처음엔 학생이 만든 장난감 정도로 생각했다. 폰에 외장(?)렌즈를 달아서 꽂아놨는데 이게 ...… Continue reading