티스토리 뷰

728x90

 


Activity Stack

• 액티비티를 여러 개 호출 시 스택이 쌓임.

• 스택에서 맨 위에 있는 액티비티가 화면에 보임.

• 액티비티 스택을 관리하는 법이 여러 개 있음.

 

* 액티비티 스택은 되도록이면 건들지 않는 것이 좋다.

     - 복잡한 부분이기 때문에 꼬일 수 있다.

     - 사용자들도 스마트 폰에 익숙해지면서 예상하는 동작이 있는데, 예상을 벗어나면 불편하다.

     - 안드로이드 공식 문서에서도 강조하고 있다.

     -> 액티비티 스택은 분명한 의도를 가지고 적용해야 한다.

 

Activity Stack 관리

1. AndroidManifest의 launchMode 이용

• <activity android:launchMode="설정값">

• standard

     - 기본 값

     - 후입선출(LIFO, Last In First Out)

     - 호출하는 모든 액티비티가 위에 쌓인다.

호출하는 모든 액티비티가 위에 쌓인다.

• singleTop

     - 가장 위(Top)의 액티비티는 중복해서 쌓이지 않는다.

     - 가장 위의 액티비티가 아니라면 중복이 가능하다.

가장 위(Top)의 액티비티는 중복해서 쌓이지 않는다.

• singleTask

     - 쌓여있던 스택은 남아있고, 새로운 스택 공간이 하나 더 생긴다.

     - 새로 생긴 스택 공간에 다른 액티비티 스택이 쌓인다.

     - 사용자가 보기엔 스탠다드와 똑같다.

쌓여있던 스택은 남아있고, 새로운 스택 공간이 하나 더 생긴다.

• singleInstance

     - 쌓여있던 스택은 남아있고, 새로운 스택 공간이 하나 더 생긴다.

     - 새로 생긴 스택 공간에는 다른 액티비티 스택이 쌓이지 않는다.

     - 다른 액티비티가 호출되면 기존에 있던 스택 공간에 쌓인다.

쌓여있던 스택은 남아있고, 새로운 스택 공간이 하나 더 생긴다. 새로 생긴 스택 공간에는 다른 액티비티 스택이 쌓이지 않는다.

 

2. Intent Flag 이용

• addFlag : Flag 추가

• setFlag : 기존의 Flag 삭제, 다시 설정.

 

• FLAG_ACTIVITY_NEW_SINGLE_TOP : singleTop과 같다.

• FLAG_ACTIVITY_NEW_TASK : singleTask와 같다.

• FLAG_ACTIVITY_NO_HISTORY

     - 호출된 액티비티가 스택에 쌓이지 않는다.

     ex) 로딩 액티비티

• FLAG_ACTIVITY_REORDER_TO_FRONT

     - 호출된 액티비티가 스택에 존재할 경우 가장 위(Top)로 올려준다.

• FLAG_ACTIVITY_CLEAR_TOP

     - 호출된 액티비티가 스택에 존재할 경우 해당 액티비티 위의 스택들을 다 지운다.

 

* 종류가 훨씬 많지만 다 외울 수 없다.

     -> stack을 관리할 수 있다는 것을 알야아 한다.

 

 

 

 

 

 

 

 

이 글은

패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online

강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.

 


728x90
댓글
공지사항