안드로이드 개발 질문/답변
(글 수 45,052)
조건
A 액티비티
B 서비스
a~z 까지 다수의 노티피케이션
시나리오
1. A 액티비티 종료
2. B 서비스에서 A 액티비티를 호출하는 a-z 노티피케이션을 생성합니다.
노티피케이션 생성 코드
Notification noti = new Notification(R.drawable.ic_launcher, tickerText, System.currentTimeMillis()); excuteIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); contentIntent = PendingIntent.getActivity(Service.this, (int) System.currentTimeMillis(), excuteIntent , PendingIntent.FLAG_UPDATE_CURRENT); mNotifyManager.notify((int) System.currentTimeMillis(), noti);
위와 같이 코드가 짜져 있습니다
노티매니저에서 노티피케이션을 할 때 노티의 ID 는 현재 시간기준으로 할당하기 때문에
생성되는 모든 노티피케이션의 ID 는 개별적이기 때문에 상태바에는 다수의 노티피케이션이 쌓이게 됩니다.
문제점
a-z 중 하나의 노티피케이션을 선택하면 A 액티비티를 정상적으로 호출합니다.
다시 상태바에서 a-z 노티피케이션을 선택
A 액티비티의 상태와는 무관하게 어떠한 이벤트도 발생하지 않음.
원하는 것
동일한 앱에서 생성한 다수의 노티피케이션이 선택되었을 때
어떤 조건이든 원하는 액티비티를 실행하고자 함
시도
우선 인텐트나 펜딩인텐트의 플래그값 설정으로는 해결 되지 않고
AndroidManifest.xml 파일에서 액티비티 속성을 싱글인스턴스로 바꾸니 되긴 하지만
side-effect 때문에 적용을 못하고 있습니다
다른 방법을 찾는데 좀처럼 구글링으로도 안나오네요
해법을 아시는 분은 필히 답글 좀 남겨주세요




자문자답
excuteIntent.setAction(""+Math.random());
과 같이 액션에 쓰레기값을 아무거나 넣으니 정상실행 되네요
이게 최대한 사이드이펙트 줄인 방법인것 같습니다.