728x90
안드로이드 백스택은 몇번 봤는데도, 기억에 잘 남지 않아 가볍게 정리 해둡니다.
새로운 액티비티가 시작되면, 실행 중이던 액티비티는 백스택에 들어가게 된다. 그리고 시작된 액티비티는 태스크라는 그룹에 속한다.
내가 보는 책에서는 백스택에 대해서 3가지로 정리하고 있다.
- 같은 앱에서 시작된 액티비티는 같은 백스택에 쌓인다.
- TaskAffinity의 속성에 따라 소속되는 태스크가 달라진다.
- LaunchMode에 따라 액티비티 생성의 여부, 새로운 태스크에 속하는 등 액티비티의 시작이 달리진다.
백스택에 쌓인 액티비티는 뒤로가기 키 등으로 액티비티를 종료하면 스택 자료구조의 특징과 같게 위에서부터 차례로 꺼내어 제거된다.
또한 TaskAffinity는 태스크의 이름으로 이해하는 것이 더 이해하기 쉽다. TaskAffinity가 지정되지 않은 경우는 자기 앱의 패키지 이름이 태스크 이름이 된다.
TaskAffinity를 설정하지 않으면, 그 앱의 TaskAffinity는 모두 같다
package="com.nanamare.mac
<activity android:name=".AActivity"/>
<activity android:name=".BActivity"/>
<activity android:name=".CActivity"
android:taskAffinity="C"/>
위와 같이 A, B, C 가 차례로 실행 된다고 가정하면, 백스택에는 A, B ,C 순으로 담기게 된다. (C가 Peek)
하지만 A, B는 taskAffinity를 명시하지 않았기 때문에, 태스크는 기본적으로 com.nanamare.mac이 되며, C는 C라는 taskAffinity를 가진다.
즉 다른 태스크로 있는 것으로 취급된다
태스크는 그룹의 개념으로 보면 이해가 쉽다.
728x90
'Android > Development Tips' 카테고리의 다른 글
커스텀뷰와 merge 태그 (0) | 2018.12.12 |
---|---|
안드로이드 패딩과 마진 (0) | 2018.12.12 |
안드로이드 디바이스 설정(언어설정, SIM 교체, 화면 돌림) 데이터 보존 (0) | 2018.12.12 |
[Android] Sparse Array 와 HashMap 비교하기 (0) | 2018.11.08 |
xml에 백그라운드 이미지와 , 버튼 클릭효과 동시에 적용하기 (0) | 2018.11.08 |