알람을 사용하던, Receiver를 사용하던, Service를 호출하던

우리는 PendingIntent를 사용하게 됩니다.

이 때 항상 Flag를 설정해 주게 되는데요.

오늘은 이 Flag사용시 주의할 점에 대해서 정리해 보도록 하겠습니다.

 

1. PendingIntent Flag의 종류

선택할 수 있는 Flag의 종류는 아래의 이미지와 같습니다.

 

하나하나 보면 다음과 같은데요.

  • FLAG_UPDATE_CURRENT : Pending인텐트가 이미 존재할 경우, Extra Data를 모두 대체

  • FLAG_CANCEL_CURRENT : Pending인텐트가 이미 존재할 경우, 기존 Pending인텐트를 cancel하고 다시 생성

  • FLAG_IMMUTABLE : 이름에서 알 수 있듯이, 기존 PendingIntent 는 변경되지 않구요, 새로 데이터를 추가한 PendingIntent를 보내도 무시함

  • FLAG_NO_CREATE: Pending인텐트가 기존에 존재하지 않으면, Null을 return

  • FLAG_ONE_SHOT : 이름이 아주 직관적인데요, 한번만 사용할 수 있는 PendingIntent란 뜻 임

이중 가장 많이 사용되는 것이 FLAG_CANCEL_CURRENT와 FLAG_UPDATE_CURRENT입니다.

 

2.동시에 필요한 PendingIntent인가

FLAG의 종류를 결정하기 전에,

PendingIntent가 동시에 존재해야 할 필요가 있는지 생각해 볼 필요가 있습니다.

예를 들면 여러개의 알람이 동시에 존재해야 할 경우가 있겠습니다.

사용자가 4시 8시 이런식으로 여러개를 맞추어놓았을 가능성이 있겠지요.

이러한 PendingIntent들은 제거되지 않고, 나름대로 존재해야할 이유가 있습니다.

물론 업데이트 되는 건에 대해서는 업데이트가 되거나 삭제후 다시 생성하던지 해야하겠지요.

 

대신 동시에 존재할 필요가 없다면,

많이 쓰이는 FLAG_CANCEL_CURRENT아니면, FLAG_UPDATE_CURRENT

이 두개 중 하나로 충분합니다.

왜냐하면 이들은 기존의 것을 취소하고 새롭게 생성하거나,

기존의 것을 업데이트 한다는 FLAG이기 때문이지요.

 

 

+ Recent posts