마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 싱글테스크 궁금한 점이 있습니다.

0 추천
현재 이해가 살짝 안되는 부분이 있어서요.

현재 엑티비티가 로그인->메인->서브->세부서브

이렇게 이동되는 흐름인데

모든 엑티비티는 다 싱글테스크입니다. 세부서브만 빼구요.

세부서브에서 finish();를 이용하여 현재(세부서브)엑티비티를 죽이고

Intent를 통하여 로그인 엑티비티를 호출하였습니다.

그래서 다시 로그인부터 로그인->메인->서브->세부서브

이렇게 타고 들어가는데

서브 엑티비티가 싱글테스크임에도 불구하고 onCreate가 호출되네요.

전 싱글테스크로 등록되어 있는 액티비티들은 최초에 onCreate한번 호출되고 그뒤로는 어떤경우라도 onResume만 호출되는줄 알았거든요.

왜냐면 싱글태스크는 1개의 엑티비티만 존재하게 되는 속성이니까요.

제가 아는 싱글태스크의 개념이 틀렸나요?
갸아악 (21,260 포인트) 님이 2013년 6월 12일 질문

3개의 답변

0 추천

싱글태스크의 정확한 개념까진 모르겠으나

onStop() 상태에서는 언제든지 시스템이 죽일 수 있다는 것을 유념해 두시면 좋을듯 싶습니다.

시스템이 해당 Activity를 kill 시킨 다면 다시 onCreate를 탈수 밖에 없겠지요

 
Gradler (109,780 포인트) 님이 2013년 6월 12일 답변
0 추천

<activity android:name=".Test" android:launchMode="singleTask" android:label="@string/app_name"  />

1. startActivityForResult 에 대해 실행이 불가능하다 왜냐 자신 왜에 어느것도 이전에 존재할 수 없기 때문이다

2. 나를 여러번 호출하더라도 나를 최상단에 놓기 때문에 같은 페이지로 이전 화면이 쌓이질 않는다.

액티비티가 존재를 해야 onResume이 불리겠죠? 조금 도움이 되셨나요 ?

안드로메다개발자 (8,830 포인트) 님이 2013년 6월 12일 답변
0 추천

세부서브를 finish했기 떄문에 oncreate가 불리는겁니다.

 

세부서브를 finish안하고 login부르시고 로그인->메인->서브->세부서브 타면

onnewintent로 불립니다.

 

물론 메모리가 부족해해 세부서브가 시스템에 의해 kill당하면 oncreate불립니다.

 

t싱글타스크는 어디에 등록되는게 아니고 이미 실행되어 있는 액티비티를 다시 실행하게 됐을때

새로 액티비티를 생서안하고 기존에 있는게 다시 resume되는거에요

finish로 종료시켰으니 떠있는게 없으니 oncreate부터 시작하는게 맞습니다.

 

싱글타스크도 startActivityForResult로 다른 액티비티를 호출하거나 호출당하는건 가능합니다.

ignitepaper (1,720 포인트) 님이 2013년 6월 12일 답변
...