'singleTask'에 해당되는 글 1건

일단 이 내용은 공식적인 기술 문서에 의한 것이 아니라

전적으로 개발상의 경험으로 정리한 내용이니 착오 없으시길 바랍니다.


문제의 발단은

현재 회사에서 운영 중인 앱의 안드로이드 버전에서

이전 버전은 홈버튼을 놀러 앱을 종료한 후 재실행 할 경우 바로 직전 화면으로 들어가는데

가장 최근 배포한 버전은 위와 같은 경우 다시 처음 로그인 화면부터 뜬다는 것이다.


로그를 확인해보니 이전 버전에서는 홈 버튼을 누른 후 재실행시 onCreate(), onResume() 어느 함수도

실행되지 않았는데 최근 배포버전은 onCreate()와 onResume()을 차례로 호출하고 있었다.


계속 검색하고 소스 코드 분석 하고 하던 중 마지막으로 확인하게 된 것이 AndroidManifest.xml 파일의

메인 Activity에 설정되어있는 android:launchMode 속성...


이전 버전 소스와 비교를 해보니 이전 버전은 이 설정 값이 singleTop으로 되어있는데

최신 배포버전에는 이 설정값이 singleTask로 되어있었다.


검색한 내용으로는

singleTop의 경우 이 값이 설정된 Activity는 호출되면 호출된 것 만큼 생성을 하는데 

다만 기존에 생성된 것이 있다면 이 것을 재활용 하게 된다고 한다. 

따라서 이 경우에는 기존에 떠있는 프로세스를 그대로 사용하기에 onCreate()가 호출되지 않는 것이다.


하지만 singleTask의 경우 이 값이 설정된 Activity는 호출되면 기존 Activity를 죽이고 새로 instance를

생성하기 때문에 항상 onCreate()부터 시작하게 되는 것이다.


이렇게 홈 버튼으로 앱 종료 후 재실행 할 때 onCreate()의 호출 여부로도 singleTop과 singleTask의 차이를

확인할 수 있다.

블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

댓글을 달아 주세요