반응형
패키지가 replace 되었을 때, 기존에 등록되어있던 알람을 취소하는 과정으로,
동일한 PendingIntent를 들고와서 취소하는 방법을 사용했었다.
근데 프로젝트 내에서 Android JetPack Navigation을 사용할 경우엔, nav_graph가 수정되기 때문에
navDeepLinkBuilder() 함수를 통해 PendingIntent를 만들 때, 동일한 nav_graph로 인식하지 못하는 오류가 있다.
navDeepLinkBuilder를 이용할 때에는 PendingIntent.getActivity() 같은 함수처럼 정수 값을 통해 유니크한 값을 지정해 줄 수 없기 때문에 불편하다.
따라서
alarmManager.cancel(alarmManager.nextAlarmClock.showIntent)
이를 활용하면 기존에 등록되어있는 알람을 취소할 수 있다.
주의해야 할 점은 AlarmManager의 구현체는 아직도 Java 언어이고
nextAlarmClock은 not null을 리턴한다고 명시되어 있지만, null을 리턴할 가능성이 있다.
즉 null safty 하지 못하다.
따라서 Exception이 발생할 수 있고, 직접 겪어보았다.
등록되어있는 알람이 없을 경우엔 Exception이 발생하게 된다.
따라서 이를 해결하려면
alarmManager.nextAlarmClock?.showIntent?.let { alarmManager.cancel(it) }
이렇게 작성해주면 된다.
반응형
'[개발 일지]' 카테고리의 다른 글
애드몹 전면광고 뒤로가기 처리에 대한 연구 (어이가 없습니다..) (0) | 2023.08.28 |
---|---|
안드로이드 인앱 상품 등록 (버전 6) (0) | 2023.07.20 |
안드로이드 인앱 결제 구현 (버전 6) (0) | 2023.07.20 |
안드로이드 애드몹 종료 광고 (0) | 2023.07.19 |
카톡 삭제된 메세지 보는법 / 사진 이모티콘 누락없이 !! (0) | 2023.07.08 |