어제에 이어서 task를 실제로 사용해보고 관리해보았다.
자주사용하는 4가지를 사용해보았는데,
따로 설정하지 않아도 기본적으로 스택에 저장되는 형식이다. 평소처럼 액티비티가 스택에 쌓이고, FILO형식으로 적용된다.
Flag Activity의 singleTop과 같은 동작을 한다.
만약 현재 스택에 해당 액티비티가 최상단에 위치하고, 해당액티비티를 다시 불러올경우, 스택에 액티비티를 추가로 push()해주지 않고, 재사용을 해준다.
사용법은 아래와 같다.
<activity
android:name=".SecondActivity"
android:launchMode="singleTop"
android:exported="false" />
Flag Activity의 clearTop과 같은 동작을 한다.
만약 스택에 이미 해당 액티비티가 존재한다면, 해당 액티비티 위에 쌓여있던 다른 액티비티들을 제거하고, 해당액티를 최상단에 위치하게 도와준다.
사용법은 다음과 같다.
<activity
android:name=".SecondActivity"
android:launchMode="singleTask"
android:exported="false" />
새로운 태스크에 액티비티 인스턴스를 생성하며, 해당 태스크에는 해당 액티비티만 존재할 수 있다. 다른 태스크에서 해당 액티비티를 시작하면, 새로운 태스크가 생성되며 해당 액티비티만 스택에 존재하게 된다.
<activity
android:name=".SecondActivity"
android:launchMode="singleInstance"
android:exported="false" />
무슨말이냐!? 위와같이 2번액티비티에 설정을 해준다면 1번액티비티에서 2번액티비티로 이동하면 기존 스택에는 1번 액티비티만 있고 새로운 Task에서 2번 액티비티가 생성된다. 그후 다른 액티비티를 불러온다면 첫번째 Task에 push돼서 액티비티가 쌓일것이고, 종료하면 1번 Task가 모두 종료되고, 2번 Task가 종료될 것이다.
아예 다른 stack에 저장시켜준다고 생각하면 편하다. singleInstance이후에 쌓이는 스택들은 기존Task에 저장된다.