launchMode 가 singleTask 혹은 singleTop 인 Activity에 intent를 보내게 되면,
존재 할 경우 onNewIntent, 존재하지 않을 경우 Activity가 새로 시작하게 된다.
일반적인 방법으로 액티비티를 호출할 때에는 startActivity로 호출하지만,
Notification을 통해 호출할 경우 PendingIntent를 사용하는데,
액티비티의 모드가 singTask, singleTop 이며 존재하는데도
강제로 액티비티를 재시작시키는 경우가 있다.
(아마도..안드로이드 레퍼런스에 코드만 보고 만들어서 그런건 아닐까 생각이 든다.)
정상적인 Activity lifecycle을 태우기 위해선, PendingIntent 생성시 requestCode를 반드시 넣어야한다.
(대부분 default값으로 0을 넣는다)
대부분 REQUEST_CODE 부분에 0 을 넣는데, private 한 값을 추가시켜주면, 정상적으로 onNewIntent가 불린다.
PendingIntent resultPendingIntent = PendingIntent.getActivity( context, REQUEST_CODE, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
'Programming > Android' 카테고리의 다른 글
[Android] 사진 저장 후 갤러리에 보이지 않는 경우. (0) | 2014.07.25 |
---|---|
[Android, Hybrid] 앱에서 파일 다운로드 구현. URL File Download. (2) | 2014.07.10 |
[Android] 안드로이드에서 핸드폰번호(휴대폰번호) 추출. (0) | 2014.06.24 |
[Android] 안드로이드 TextView 글자에 색깔 넣기. 부분적으로 색깔 넣기. html 스타일 적용. (0) | 2014.06.24 |
[Android] TextView, 글자에 외곽선(Border, outline) 넣기 (2) | 2014.06.24 |