액티비티 생명주기..ㅎㅎ

kim hyun woo·2022년 7월 13일
1

액티비티 생명주기 (Activity LifeCycle),,,

이게 멀까? 내가 왜 액티비티의 인생사 까지 알아야 할까? ㅠㅠ;

안드로이드 개발자라면 가장 중요하다고 생각하는 것중에 하나 일 것이다..

모든지 알면 좋은 것!! 자기합리화 일단 공부해보자 ㅎㅎ


액티비티 생명주기(Activity LifeCycle)란
액티비티가 메모리에 배정을 받으면 생명주기를 가지게 된다. 한마디로 사람에 비유하자면 태어나서 죽을때까지 과정이다.

이건 구글에서 제공되는 생명주기 이미지다.
이것을 외우기로 했다.. 외울 것이다... 아니 그냥 외워야 된다. 내년까지 외우겠다;

핵심 메소드는 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() 로 총 6가지가 존재한다.
여기서 꼭 구현해야 하는 메소드는 onCreate()이다. 이외에는 꼭 구현하지 않아도는 되지만 좋은 앱을 만들기 위해선 다 이해하고 어떤 메소드를 써야 하는지 파악을 할 수 있어야 된다..
차근차근 울지말고 자세히 공부해보자.
난 안좋은 앱만 만들었던 것이다..


1. onCreate()

이놈은 시스템이 앱을 생성할 때 실행되는 메소드이다.
액티비티 생명주기 동안 딱 한번만 동작되는 초기화 작업 및 시작 로직을 실행 할 수 있다.

savedInstanceState를 파라미터로 받는데 여기엔 이전에 액티비티에 저장된 bundle객체가 담겨져 있다. (처음엔 null이 저장되어 있음)


2. onStart()

onCreate()가 실행되고 다음 이 메소드가 호출되면 액티비티가 사용자에게 보여지는 시점이다.
그리고 사용자와 상호작용을 할 준비를 한다.

별거없는 것같은데..?


3. onResume()

이 메소드가 호출되면 사용자와 상호작용을 할 수 있는 상태가 된다. 이벤트나 인터럽트등 사용자 화면에 있는 동안 앱은 계속 Resume상태가 된다. 여기서 모든 기능을 활성화 할 수 있다.

그럼 만약 이벤트나 인터럽트가 발생한다면?
그럼 onPause()가 호출 될 것이다.


4. onPause()

이 녀석은 사용자가 액티비티에 포커스를 두지 않을 때 호출 된다.
즉, 포그라운드에 액티비티가 없다라는 뜻이다.
(예를 들면 전화가 왔을 때나 요청 다이얼로그가 떴을때)
지금 실행중인 액티비티를 멈추되 다시 돌아올테니 종료하지 말라는 말이다. 지 멋대로다;;

여기서 할당된 자원을 관리해주면 배터리 효율에 좋다.!!
하지만 이 메소드는 잠깐 호출되기 때문에 무언가 저장하기엔 좋지 않다. 저장을 하기 위해선 onStop()이 적절 하다.

여기서 다시 액티비티가 재게되면 onResume()이 호출된다.


5. onStop()

액티비티를 완전히 떠났을 때 이 메소드가 호출된다.
즉 새로 시작된 액티비티가 화면 전체를 차지 할때 해당된다. 또는 액티비티가 실행이 완료되어 종료 할 때 호출 할 수 있다.
여기서는 할당된 자원을 해제하거나 조정해야 된다.

예를 들면 보고 있던 영화를 멈춘다거나 명쾌한 음악을 위해 켜져있던 surround기능을 끌 수 있다.ㅎㅎ 별차이없던데;

아까 말한 용량이 큰 저장 할 것들은 다 여기서 실행시켜주면 된다.

이상태에서 만약 단순변심으로 다시 앱을 키게 된다면 onRestart() -> onStart() -> onResume()이 차례로 호출되어 다시 액티비티가 활성화 된다.


6. onDestroy()

말로만 들으면 무섭다.. 파괴하다, 말살하다.. 무서운 놈이다..

이놈은 말 그대로 액티비티가 종료되기 전에 실행된다.
종료가 된다는 말은
1. finish()가 호출되어 사용자가 앱을 종료 할 때
2. 가로세로 화면 전환을 했을 때****

만약 2번에 경우면 변경된 인스턴스를 생성하여 onCreate()가 다시 호출 되게 된다.

우와,, 화면전환하는 간단한 동작이 이러한 복잡한 생명주기를 다 겪는 것이라니.. 신기하다 ㅎㅎ

그리고 중요한 것..
아직도 할당된 자원이 있다면 이 메소드에서 모두 해제를 해야된다. 그렇지 않으면 Memory Leak(메모리 누수)라는 무시무시한 놈이 발생 할 수 있다. 별로 안무서운데

이 후 액티비티는 완전히 종료되게 된다.
한마디로 액티비티는 우리곁을 떠난다..ㅜㅜ


후기

기본이 가장 중요한 것 같다. 아무리 멋진 기술을 배워도 사용하는 사람이 기본이 안되어 있다면 잘 사용할 수가 있겠는가..

총든 비실이 vs 맨주먹 퉁퉁이
난 아무리 봐도 퉁퉁이가 질 것 같은데;;
쨋든 오늘의 교훈 기본에 충실하자!!

profile
TIL(Today I Learned)

0개의 댓글