출처: http://mazdah.tistory.com/600
일단 이 내용은 공식적인 기술 문서에 의한 것이 아니라 전적으로 개발상의 경험으로 정리한 내용이니 착오 없으시길 바랍니다.
문제의 발단은
현재 회사에서 운영 중인 앱의 안드로이드 버전에서 이전 버전은 홈버튼을 놀러 앱을 종료한 후 재실행 할 경우
바로 직전 화면으로 들어가는데 가장 최근 배포한 버전은 위와 같은 경우 다시 처음 로그인 화면부터 뜬다는 것이다.
로그를 확인해보니 이전 버전에서는 홈 버튼을 누른 후 재실행시 onCreate(), onResume() 어느 함수도 실행되지 않았는데
최근 배포버전은 onCreate()와 onResume()을 차례로 호출하고 있었다.
계속 검색하고 소스 코드 분석 하고 하던 중 마지막으로 확인하게 된 것이 AndroidManifest.xml 파일의 메인 Activity에 설정되어있는 android:launchMode 속성...
이전 버전 소스와 비교를 해보니 이전 버전은 이 설정 값이 singleTop으로 되어있는데 최신 배포버전에는 이 설정값이 singleTask로 되어있었다.
검색한 내용으로는 singleTop의 경우 이 값이 설정된 Activity는 호출되면 호출된 것 만큼 생성을 하는데다만
기존에 생성된 것이 있다면 이것을 재활용 하게 된다고 한다. 따라서 이 경우에는 기존에 떠있는 프로세스를 그대로 사용하기에 onCreate()가 호출되지 않는 것이다.
하지만 singleTask의 경우 이 값이 설정된 Activity는 호출되면 기존 Activity를 죽이고 새로 instance를 생성하기 때문에 항상 onCreate()부터 시작하게 되는 것이다.
이렇게 홈 버튼으로 앱 종료 후 재실행 할 때 onCreate()의 호출 여부로도 singleTop과 singleTask의 차이를 확인할 수 있다.
'IT_Programming > Android_Java' 카테고리의 다른 글
Retrofit - 쉽고 빠른 Android HTTP REST 인터페이스 라이브러리 (0) | 2014.07.19 |
---|---|
Manifest Activity 태그의 launchMode 에 대해 들어보셨나요? (0) | 2014.07.18 |
[펌] startActivityForResult()로 실행되는 activity 가 다른 task에 있다면? (0) | 2014.07.18 |
안드로이드 하단 네비게이트 - 시스템 바 (홈버튼, 백버튼,옵션버튼) 숨기기 (0) | 2014.07.16 |
[Android] 정규식과 ImageSpan을 활용해 괄호 안 문자 이미지로 변경하기 (0) | 2014.07.16 |