일단 이 내용은 공식적인 기술 문서에 의한 것이 아니라
전적으로 개발상의 경험으로 정리한 내용이니 착오 없으시길 바랍니다.
문제의 발단은
현재 회사에서 운영 중인 앱의 안드로이드 버전에서
이전 버전은 홈버튼을 놀러 앱을 종료한 후 재실행 할 경우 바로 직전 화면으로 들어가는데
가장 최근 배포한 버전은 위와 같은 경우 다시 처음 로그인 화면부터 뜬다는 것이다.
로그를 확인해보니 이전 버전에서는 홈 버튼을 누른 후 재실행시 onCreate(), onResume() 어느 함수도
실행되지 않았는데 최근 배포버전은 onCreate()와 onResume()을 차례로 호출하고 있었다.
계속 검색하고 소스 코드 분석 하고 하던 중 마지막으로 확인하게 된 것이 AndroidManifest.xml 파일의
메인 Activity에 설정되어있는 android:launchMode 속성...
이전 버전 소스와 비교를 해보니 이전 버전은 이 설정 값이 singleTop으로 되어있는데
최신 배포버전에는 이 설정값이 singleTask로 되어있었다.
검색한 내용으로는
singleTop의 경우 이 값이 설정된 Activity는 호출되면 호출된 것 만큼 생성을 하는데
다만 기존에 생성된 것이 있다면 이 것을 재활용 하게 된다고 한다.
따라서 이 경우에는 기존에 떠있는 프로세스를 그대로 사용하기에 onCreate()가 호출되지 않는 것이다.
하지만 singleTask의 경우 이 값이 설정된 Activity는 호출되면 기존 Activity를 죽이고 새로 instance를
생성하기 때문에 항상 onCreate()부터 시작하게 되는 것이다.
이렇게 홈 버튼으로 앱 종료 후 재실행 할 때 onCreate()의 호출 여부로도 singleTop과 singleTask의 차이를
확인할 수 있다.
'Development > Android' 카테고리의 다른 글
[Tip] Android Studio : Gradle sync failed: Uninitialized object exists on backward branch 70 (4) | 2019.01.09 |
---|---|
GCM으로 전환 후 C2DM이 적용된 단말 처리 (0) | 2016.06.08 |
[옛 글] [Android] ADT 21.0.1 버그 문제 (0) | 2013.07.19 |
[옛 글] 갑자기 닥친 황당한 일 - C2DM 서비스 deprecated... (0) | 2013.07.19 |
[옛 글] [Android] Proguard를 사용하여 난독화 진행서 오류 해결 (0) | 2013.07.19 |