태스크: 여러 애플리케이션에서 실행 되는 액티비티들의 관계 기록
(Task is a stack of activities)
※ 아래에 제시되는 회색상자가 하나의 태스크이다.
① Push: 새로운 액티비티를 시작하여, task내에 밀어 넣는 것
✨Back Stack
이 경우, 새롭게 추가된 activity2는 기존에 있던 Activity1의 위에 push되며, 이를 그 뒤에 있는 스택 즉, Back Stack위에 쌓였다고 표현한다.
② Pop: 가장 최근의 액티비티를 스택에서 제거하는 것
아래의 사진과 같이, Activity3까지 쌓아올렸고, 현재 이 Activity3가 foreground상으로 보여지고 있다. 이때 Back버튼을 누른다고 해보자.
이는 앞서 언급한 push의 정반대 과정이다.
activity3를 제거하므로써 다시 Activity2가 보이게 된다.
③ Fragement에서의 Push-Pop
다음과 같이, Activity2내에 Fragment가 Push되었고, 현재 foreground(focuse된 상태)에 있는 상태이다. 여기서 만약, back을 하면 어떻게 될까? activity2가 통째로 pop될까?
아쉽게도 아니다. fragment만 pop된다.
결론: ✨Push-Pop모델은 LIFO 즉, 후입선출구조이다.✨
안드로이드는 자동으로 태스크를 관리하지만, 런치모드를 통해 태스크가 관리되는 방식을 직접 설정할 수 있다.
(AndroidMeniFest.xml -> 인텐트 플래그에서 설정 )
① standard (테스크 1개)
② singleTop (태스크 1개 + 재활용)
-standard와 원리는 비슷. 그러나, 가장 위에 있는 액티비티가 중복해서 쌓이지는 않는다.
⚠️주의⚠️
중첩만 되지 않을 뿐, 중간에 다른 Activity가 존재 할 경우 중복되어 생성될 수는 있다.
③ singleTask (태스크 多 + 재활용)
👉물론 유저입장에서는 foreground만 보기 때문에 위의 두 모드와 보여지는 것은 똑같다.
④ singleInstance (태스크 多 + 재활용 + 신규 태스크에 타 액티비티 허용X)