본문 바로가기

앱 개발/Chapter_Curriculum

[과제] Activity 정리

< Activity LifeCycle >

 

일반적으로 onCreate() -> onStart -> onResume() -> onPause() -> onStop() -> onDestroy()순으로 진행되지만, onStop() -> onRestart() -> onStart()로 가기도 한다.
 
1) Activity launched

Activity 실행의 시작이다. 이후 onCreate가 실행된다. 앱을 이용하려고 터치를 하는 순간이 이 부분이다.
 
2) onCreate()

Activity를 생성하여 이후 onStart()가 실행된다. Activity가 최초로 실행되기 때문에 초기화 작업을 해주는 것이 좋다.


3) onStart()

Activity가 사용자에게 보여지기 직전에 호출된다.


4) onResume()

Activity가 사용자와 상호작용하기 직전에 호출된다. Activity가 실제로 활성화된 상태이다.
 
5) Activity running

Activity가 사용자와 상호작용하는 단계이다.
 
6) onPause()

Activity가 Focus를 가지고 있지 않으면 호출되어 Paused상태가 된다. 다시 Focus를 가지면 onResume()이 실행된다.
 
7) onStop()

Activity가 화면을 완전히 벗어나면 호출되어 Stopped상태가 된다. 다시 Activity로 돌아오면 onRestart()가 실행된다.
 
8) onRestart()

Activity가 Stopped 상태에서 다시 보여질 때 실행된다. 이후 onStart()가 실행된다.
 
9) onDestroy()

Activity가 종료되기 전에 호출된다. Activity가 소멸되는 단계이다.


10) Activity shut down

Activity가 종료된 상태이다.

 

 

 

< Activity Stack >

 

Activity는 Stack구조의 메모리에 관리된다. Activity를 활성화 할 때 해당 Acitivity정보가 Stack에 쌓이게 된다.
startActivity()는 Activity를 활성화하고 startActivityForResult()는 Activity 활성화 및 활성화된 Activity가 Destroy될 때 결과를 반환받는다. FILO( First In Last Out )방식의 자료구조로서 가장 먼저 저장된 정보가 가장 아래쪽에 쌓이고, 꺼낼 때는 가장 마지막에 저장된 정보부터 꺼내온다. 가장 상위에 존재하는 Activity가 현재 화면에 보이게 되고, Activity를 Finish()로 종료하거나 뒤로가기 클릭시 바로 이전 즉, 바로 밑에 있는 Activity로 이동한다. Activity 활성화시에 Flag 옵션으로 Stack의 정보를 변경 또는 관리할 수 있다.

 

Activity의 4가지 launch 모드는 다음과 같다.

- Standard: 순서대로 계속 엑티비티 스택에 쌓아 올린다.

 
- SingleTop: 최상위 스택에 있는 엑티비티를 또다시 호출할경우 새로 스택에 쌓지 않고 기존에 있는 액티비티를 재활용하고 해당 엑티비티는 onNewIntent() 메서드로써 엑티비티가 다시 호출되었음을 알린다. '최상위 스택'에 있지 않은 엑티비티는 standard 모드와 같이 스택에 쌓인다.

 
- SingleTask: 오직 엑티비티 스택의 '루트'에만 존재 할수 있다. SingleTask로 설정된 액티비티를 호출하게되면 새로운 태스크가 생성되어 새로운 루트로써 스택이 쌓여지게 되고, 다른 액티비티를 호출할경우에 그 액티비티는 새로 생성된 태스크 위에 쌓이게 된다. 이미 존재하는 액티비티를 호출할 경우에는 SingleTop에서처럼 해당 액티비티가 재활용된다.

 
- SingleInstance: SingleTask 과 동일하게 액티비티 호출시에 항상 새로운 태스크가 생성된다. 그러나 SingleTask는 새로운 태스크에 2~3개 이상의 액티비티 스택을 쌓을수 있는 반면에, SingleInstance는 오직 하나의 태스크에 하나의 액티비티만 존재할 수 있다.

 

 

 

< Fragment 정리 >: https://lionbae.tistory.com/entry/Fragment-정리

728x90

'앱 개발 > Chapter_Curriculum' 카테고리의 다른 글

Chapter3-2 (앱 개발 기초 프로젝트)  (0) 2024.04.07
[과제] 피드백 (Android 입문)  (0) 2024.03.29
[과제] Fragment 정리  (0) 2024.03.27
[과제] UI xml 연습 후기  (0) 2024.03.26
[과제] Android 입문  (0) 2024.03.22