관련된 실행 액티비티들을 순서대로 묶어 관리하는 것.
서로 다른 package의 activity가 실행되더라도 하나의 실행 흐름안에 있게 된다.
Task는 stack의 형태로 구성됨 (실행된 activity가 쌓이는 구조)
맨 마지막 root activity가 없어지면 task는 완전 종료됨
Task 제어는 Activity 실행 모드와 FLAG를 통해서 제어가 가능하다.
standard : 기본 값으로 task내에 중복된 activity 허용 (default 값임)
singleTop : task내에 top activity와 동일한 activity를 실행하면 중복해서 쌓지 않고 기존의 top activity 재사용
singleTask : 위치에 상관없이 activity를 재사용해 중복을 허용하지 않음
singleInstance : 중복을 허용하지 않을 뿐 아니라 혼자서 별도의 task를 구성한다.
설정은 2가지 방법이 있다. Manifest.xml에 등록해서 동작 방식 자체를 결정할 수 있고, Intent Flag를 통해서는 runtime에 설정하며 그때 그때 다른 값을 지정할 수 있다.
manifest.xml
<activity android:name=".MainActivity" android:noHistory="true/>
MainActivity
binding.btn.setOnClickListener {
val intent = Intent(this, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NO_HISTORY
}
startActivity(intent)
}
FLAG_ACTIVITY_NEW_TASK와 같이 사용되며 task내에서 다른 activity를 모두 삭제함
flag
binding.btn.setOnClickListener {
val intent = Intent(this, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
}
startActivity(intent)
}
binding.btn.setOnClickListener {
val intent = Intent(this, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
}
startActivity(intent)
}