Task란 무엇인가?
-> 관련된 실행 Activity를 순서대로 묶어서 관리하는 것이다.
만약, 서로 다른 package의 activity가 실행되더라도 하나의 실행 흐름 안에 있게 된다.
Task는 stack의 형태로 구성된다.
즉, 실행되는 activity들이 차곡차곡 쌓이는 구조이다.
(우리가 뒤로가기 키를 누를 때, 맨 위의 activity가 사라지고 이전의 activity가 나타나는 것이 이것 때문이다.)
만약, Task를 제어하지 않는다면 ??
예를 들어 은행 뱅킹 앱이 있다고 하자.
은행뱅킹앱은 로그인 -> 계좌조회 -> 계좌이체 같은 Activity들로 구성되어 있다.
1로그인 -> 2계좌조회 -> 3계좌이체 -> 4이체완료 -> 5계좌조회
위와 같은 경우에서...
2계좌조회와 5계좌조회는 같은 activity인가? 아니면 새로운 activity를 만든 것인가?
5계좌조회에서 뒤로가기를 눌렀을 때, 4이체완료로 가는가? 1로그인으로 가는가?
이를 제어할 수 있는 것이 Task 제어이다.
그리고 그 방법으로 Activity실행 모드와 FLAG가 있다.
Activity 실행모드의 종류
Mode | 설명 |
standard | 기본 값, task 내에 중복된 activity 허용 |
singleTop | task 내에 top activity와 동일한 activity를 실행하면 중복해서 쌓이지 않고 기존의 top activity를 재사용한다. intent flag로 설정도 가능하다. => Intent.FLAG_ACTIVITY_SINGLE_TOP |
singleTask | 위치에 상관 없이 activity를 재사용해 중복을 허용하지 않는다. |
singleInstance | 중복을 허용하지 않을 뿐 아니라 혼자서 별도의 task를 구성한다. 좀 이상해서 잘 사용하지 않음... |
AndroidManifest.xml에 등록하는 Activity 실행 모드는
등록 시에 동작 방식이 결정된다.
Intent Flag를 이용해 설정하는 FLAG는
runtime에 설정하며 그때 그때 다른 값을 지정할 수 있다.
우리는 이 Task를 제어하여
1로그인 -> 2계좌조회 -> 3계좌이체 -> 4이체완료 -> 5계좌조회
로 이루어졌을 때,
5계좌조회에서 뒤로갔을 때 1로그인 창으로 갈 수 있다.
계좌이체와, 이체완료 activity를 task 제어를 통해 없앨 수 있기 때문이다.
이런 Task를 제어하는 일이 많지는 않겠지만, 특수한 상황에서 사용할 때를 대비해 알아두자 !
'안드로이드 > 정리' 카테고리의 다른 글
[Android] Firebase에 관해... (0) | 2021.10.18 |
---|---|
[Android] ContentResolver, ContentProvider에 관해 (0) | 2021.10.12 |
[Androdi] Fragment에 관해..① (0) | 2021.10.08 |
[Android] Intent에 관해 (0) | 2021.10.06 |
[Android] Activity의 생명주기 (0) | 2021.10.05 |