액티비티 테스크 관리하기
매니페스트에서 설정하기
launchMode
✔ 호출할 액티비티를 새로 생성할 것인지 재사용할 것인지 결정
✔ 기본값은 새로 생성하도록 설정되어 있음
✔ standard, singleTop, singleTask, singleInstance
taskAffinity
✔ affinity가 동일한 테스크는 같은 task에 들어간다.
✔ 기본값이 manifest에 정의된 패키지명이므로 한 앱의 모든 액티비티들은 동일한 affinity를 갖는다.
allowTaskReparenting
✔ true로 설정할 경우, 호출한 액티비티를 동일한 affinity를 가진 테스크에 쌓이도록 한다.
✔ 기본값은 false이다.
clearTaskOnLaunch
✔ true로 설정할 경우, 액티비티가 재실행될 때 실행된 액티비티의 수와 관계없이 메인 액티비티를 제외하고 모두 제거한다.
✔ 기본값은 false이다.
alwaysRetainTaskState
✔ 사용자가 특정 시간 동안 앱을 사용하지 않을 경우 시스템이 루트 액티비티를 제외한 액티비티들을 제거한다.
✔ 기본값은 false이며, true일 경우 시스템이 관여하지 않는다.
✔ 루트 액티비티 : 테스크에서 가장 먼저 실행된 액티비티
finishOnTaskLaunch
✔ 앱을 다시 시작할 때, 테스크에 해당 옵션이 true인 액티비티가 있으면, 해당 테스크를 종료시킨다.
소스 코드에서 intent에 플래그 추가하기
val intent = Intent(this, SubActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
FLAG_ACTIVITY_CLEAR_TOP
✔ 호출하는 액티비티가 스택에 있으면 해당 액티비티를 Top으로 만들기 위해 그 위에 존재하던 액티비티를 모두 삭제한다.
FLAG_ACTIVITY_NEW_TASK
✔ 새로운 테스크를 생성하여 안에 액티비티를 추가할 때 사용한다.
✔ 기존에 존재하는 테스크 중에 생성하려는 액티비티와 동일한 affinity를 가지고 있는 테스크가 있으면 해당 테스크로 액티비티가 들어간다.
FLAG_ACTIVITY_MULTIPLE_TASK
✔ FLAG_ACTIVITY_NEW_TASK와 함께 사용하며, 호출되는 액티비티를 메인으로 하는 새로운 테스크를 생성한다.
✔ 해당 플래그를 사용할 경우, 동일한 액티비티를 하나 이상의 테스크에서 열 수 있다.
FLAG_ACTIVITY_SINGLE_TOP
✔ 호출되는 액티비티가 Top에 있으면 해당 액티비티를 다시 생성하지 않고, 존재하던 액티비티를 다시 사용한다.
FLAG_ACTIVITY_NO_HISTORY
✔ 액티비티가 스택에 쌓이지 않도록 한다. 주로 로딩화면 등에 사용한다.
FLAG_ACTIVITY_REORDER_TO_FRONT
✔ 호출하려는 액티비티가 스택에 존재할 경우, Top으로 올려준다.
'Android > Concept' 카테고리의 다른 글
[Android] [Kotlin] SharedPreferences (0) | 2021.09.19 |
---|---|
[Android] [Kotlin] SQLite (0) | 2021.09.14 |
[Android] [Kotlin] ViewPager (뷰페이저) (0) | 2021.09.13 |
[Android] [Kotlin] 생명주기 (0) | 2021.09.12 |
[Android] [Kotlin] 리사이클러뷰 (0) | 2021.09.01 |