공부/안드로이드

안드로이드 생명주기

B612 2024. 2. 4. 00:14

액티비티는 생명주기를 갖고 있습니다.

(액티비티는 단순하게 화면이라고 생각할 수 있습니다. 카카오톡을 실행할 때 맨 처음 뜨는 로고가 박힌 화면, 친구 창 등등이 모두 하나의 액티비티에요)

 

유튜브를 보다가 전화를 받은 후 다시 유튜브를 볼 때, 영상을 이어서 시청할 수 있습니다.

단순히 화면의 입장에서 생각하면 유튜브 - 전화 - 유튜브 인데, 어떻게 이어서 시청이 가능할까요?

 

이밖에도, 앱을 사용하지 않을 때 시스템 리소스가 소비되는 것을 막거나, 가로/세로 회전하는 경우 비정상 종료가 되는 것을 막기 위해서 등 안드로이드 생명주기는 개발에서 꽤나 중요한 요소입니다.

 

그림 1: 안드로이드 수명주기

 

 

onCreate()

액티비티를 생성할 때 실행되는 메소드으로, 필수적으로 구현해야 합니다.

액티비티가 생성되면 생성됨 상태이지만, onCreate() 메소드가 실행을 완료하면 시작됨 상태가 되며 onStart()와 onResume() 메소드를 호출하게 됩니다.

 

onStart()

onCreate() 메소드와 마찬가지로, onStart() 메소드가 실행을 완료하게 되면 재개됨 상태가 되어 onResume() 메소드를 호출합니다.

 

onResume()

드디어 재개됨 상태가 되고, onResume() 메소드가 호출되면 앱이 사용자와 어떤 이벤트가 발생하기 전까지 상호작용 할 수 있게 됩니다. 여기서 어떤 이벤트란 앱에 포커스가 되어있는 상태를 말합니다, 예를 들자면, 글의 맨 처음 말했던 것처럼 전화가 오거나, 다른 액티비티(화면)으로 이동, 화면이 꺼짐 등의 상황입니다!

 

onPause()

사용자가 액티비티를 떠났다면! 이 메소드가 호출됩니다. 유의할 점은, 해당 액티비티가 사라지는 것이 아니며, 사용자가 멀티 창을 사용하고 있는 경우에는 여전히 액티비티가 우리 눈에 보일 수도 있다는 것이에요.

onPause()는 액티비티가 잠시 멈춘 경우에 계속 실행되어서는 안되지만, 곧 다시 시작할지도 모르는 작업을 일시중지 합니다.

반복적으로 말하지만, 전화가 와 잠시 유튜브 시청이 멈추었다면, 전화를 끊고나서는 다시 영상을 시청할수도 있잖아요. 그런 경우에 onPause() 메소드가 호출되는 것입니다.

액티비티가 다시 재개됨 상태가 될 경우, 시스템은 onResume() 메소드를 호출하게 됩니다.

 

onStop()

액티비티가 사용자에게 표시되지 않으면 중단됨 상태가 되어, onStop() 메소드가 호출됩니다. onStop() 메소드는 어플리케이션이 사용자에게 보이지 않는 동안 필요하지 않은 리소스를 해제하거나 조정합니다.

 

onDestroy()

액티비티가 소멸되기 전에 호출되는 메소드 입니다.

 

1. 사용자가 액티비티를 닫거나, finsh()가 호출되어 액티비티가 종료되는 경우

2. 기기 회전, 멀티 윈도우 모드 대문에 시스템이 일시적으로 액티비티를 소멸 시키는 경우

위의 경우 중 하나에 해당할 경우 onDestroy() 메소드가 실행됩니다.

 

그림 2: 프로세스 수명 주기와 액티비티 상태 간의 관계

 

 

(사진 1, 사진 2 출처 : https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko

'공부 > 안드로이드' 카테고리의 다른 글

Frida-Labs 0x2  (0) 2024.05.31
Frida-Labs 0x1  (0) 2024.05.13
안드로이드의 저장공간에 대해  (1) 2023.12.03
Hooking (w. frida)  (0) 2023.12.03
frida 설치  (2) 2023.11.24