티스토리 뷰

반응형

모바일 앱 개발의 중요한 부분 중 하나인 액티비티에 관해 알아봅니다.

 

액티비티는 화면 하나로 이해하는 것이 좋습니다. 여러 액티비티는 여러 화면을 의미하겠죠?

 

액티비티는 생명주기를 가지게 되는데, 우리는 이를 영어로 Activity Lifecycle이라고 칭합니다. 액티비티가 만들어지고 없어지기 까지의 일종의 생명주기를 갖게 되는 셈입니다.

 

아래의 사진을 확인합니다.

출처: android official document

위의 사진처럼, 액티비티가 시작하면, onCreate, onStart, onResume 메소드가 실행되며, 액티비티가 러닝 상태로 바뀌게 됩니다. 사용자의 행동에 따라 액티비티는 onPause, onStop의 상태가 되며, 앱을 종료하는 순간 onDestroy 상태로 넘어가면서 액티비티가 없어지게 됩니다.

반응형

이렇게 6가지 콜백 함수로 구성된 생명주기에서 각각 함수가 지니는 의미를 이해해 봅시다. 우선 콜백(Callback)의 개념은 어떠한 특정 동작이 발생하는 경우 이를 알려주는 개념으로 이해하길 바랍니다. A가 B한테 특정 동작을 알려준다고 생각하면 쉽니다.

 

onCreate는 액티비티가 최초로 실행될 때 나오는 화면으로 단 한 번만 실행됩니다. 물론 앱이 충돌이나서 다시 시작하는 경우를 제외하고는, onCreate는 한 번 만 실행되는 점을 알아두시기 바랍니다.

 

onStart는 액티비티가 실행된 상태를 나타냅니다. 해당 메소드는 매우 빠르게 완료되고, onStart 상태에서 바로 onResume 상태로 넘어 갑니다.

 

onResume은 다시 액티비티가 호출될 때 실행되는 부분입니다. 이 상태에 들어갔을 때 앱이 사용자와 상호작용합니다. 어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 앱이 이 상태에 머무르게 되는데, 전화가 오거나, 사용자가 다른 활동으로 이동하거나, 기기 화면이 꺼지는 이벤트 등이 이에 해당합니다.

 

onPause는 잠시 중단된 액티비티 상태입니다. 방해되는 이벤트가 발생하면 활동은 onPause 상태로 들어가게 됩니다. 

 

onStop은 액티비타가 완전히 보이지 않는 상태입니다. 사용자에 의해 새로 시작된 활동이 화면 전체를 차지할 경우에 이러한 상태로 들어갑니다.

 

onDestroy는 액티비티가 완전히 종료된 상태입니다. 앱을 종료하게 되면 이러한 상태가 됩니다.

 

수명주기를 직접 테스트해볼 수 있는데, java - MainActivity.kt 파일에서 테스트가 가능합니다.

테스트된 코드를 살펴 봅니다.

ackage com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.ActionMode

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.imageview)

        Log.d("life_cycle", "onCreate")
    }

    override fun onStart() {
        super.onStart()
        Log.d("life_cycle", "onStart")
    }

    override fun onResume() {
        super.onResume()
        Log.d("life_cycle", "onResume")
    }

    override fun onPause() {
        super.onPause()
        Log.d("life_cycle", "onPause")
    }

    override fun onStop() {
        super.onStop()
        Log.d("life_cycle", "onStop")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d("life_cycle", "onDestroy")
    }
}

Log 연산자를 이용하여, 태그와 메시지를 넣어주면, 액티비티가 작동되는 순간, 액티비티 수명주기에 따라 입력해둔 메시지가 안드로이드 스튜디오 제일 하단의 Logcat 부분에서 출력됩니다. 이때, Verbose 부분에 정해준 태그로 검색하면 됩니다.

 

반응형
댓글