대딩 기록(~22.01)/안드로이드 공부노트

안드로이드 액티비티 생명주기

문과 해달 2021. 8. 20. 01:06

*참고 저서 <오준석의 안드로이드 생존코딩>

 

코틀린 기본 구문을 익힌 후엔, 책에 따라 여러 실습을 하고 있다.

중요한 개념들을 많이 거쳐온 것 같아, 몇 가지를 정리해보려 한다.

 

8장에 있는 액티비티 생명주기이다.

어플리케이션의 하나의 화면, 즉 액티비티는 특정한 생명주기를 지니고 있다.

특정 시점에 특정 메서드가 호출되도록 되어 있으며, 개발자는 해당 시점에 어떻게 동작할 것인지에 따라

각 메서드를 오버라이딩하는 것이다. 이 메서드들을 콜백 메서드라고 할 수도 있다.

가장 먼저, 액티비티의 생성과 함께 실행되는 메서드가 onCreate()이다. 안드로이드 스튜디오에서

액티비티를 생성하면 기본적으로 작성되어있는 메서드이기도 하다. onCreate 내에 코드를 추가하면,

생성과 동시에 코드들이 실행된다.

 

package com.example.mywebbrowser

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
    }
}

빈 프로젝트를 생성했을 시 초기 코드. onCreate함수를 override하도록 되어 있다.

 

그 다음에는 onStart(), onResume()메서드가 차례로 호출된다. 동시에 실행되어선 안되는 코드들이 있다면

이를 이용해 분기할 수 있을 것 같다.

 

이 이후에 액티비티가 실행 중이다가, 다른 액티비티가 실행되면 onPause() 메서드가 실행된다.

그러다 액티비티가 완전히 화면에서 사라지게 되는 순간, onStop() 메서드가 실행된다.

마지막으로 액티비티가 종료될 때, onDestroy() 메서드가 실행된다. 앱이 복잡해 종료 시 특정 객체를

메모리에서 해제시켜 줘야 할 때, onDestroy()를 오버라이드해줄 필요가 생긴다.

중앙의 일자로 내려오는 흐름은 모두 설명했다. 사이드의 뒤돌아가는 흐름들은 앱이 백그라운드에 있거나,

화면이 꺼졌거나, 메모리 부족 등으로 강제 종료될 때 발생한다. 그에 따라 액티비티가 다시 실행될 때 어떤 단계에서 다시 시작하는냐 역시 확인할 수 있다.

 

이러한 lifecycle 개념은 사실 Unity를 공부할 때도 겪어본 적이 있다. awake, start함수 등이 그랬다.

뛰어난 앱 개발자는 앱의 상태에 따라 적절한 처리를 해주어, 에러를 없애고 성능을 높여야 할 것이다.

이를 위해 안드로이드 액티비티 생명주기는 굉장히 중요한 개념일거라 생각한다.