Activity는 안드로이드 애플리케이션의 핵심 구성 요소 중 하나로, 사용자와 상호작용하는 하나의 화면을 의미합니다. 안드로이드 앱에서 사용자가 보게 되는 모든 화면은 하나 이상의 Activity로 구성됩니다. 예를 들어, 이메일 앱에서는 '메일 목록 화면', '메일 작성 화면', '메일 읽기 화면' 등이 각각의 Activity가 될 수 있습니다.
Jetpack Compose에서는 아래와 같이 액티비티를 사용합니다.
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApp()
}
}
}
@Composable
fun MyApp() {
Text(text = "Hello, Jetpack Compose!")
}
setContent는 Compose UI를 Activity에 설정하는 역할을 합니다. 이전에는 XML 파일을 통해 UI를 설정했다면, 이제는 setContent 블록 안에 직접 컴포저블 함수를 호출하여 UI를 정의합니다.
Activity는 시작(생성)부터 종료(파괴)까지 여러 가지 상태(생명주기)를 거칩니다. 이는 앱이 백그라운드로 전환되거나, 새로운 화면으로 넘어가거나, 앱이 종료될 때 어떻게 동작해야 하는지를 관리하는 데 매우 중요합니다.
onCreate(): Activity가 처음 생성될 때 호출됩니다. 이 메서드 안에서 UI를 초기화하고 필요한 리소스를 로드합니다. Jetpack Compose를 사용할 경우, 여기서 setContent를 통해 Compose UI를 설정합니다.onStart(): Activity가 사용자에게 보이기 시작할 때 호출됩니다. 이 시점에 UI가 화면에 표시되지만, 사용자와 상호작용할 준비가 되지 않은 상태입니다.onResume(): Activity가 사용자와 상호작용할 준비가 완료되면 호출됩니다. 이 상태에서는 사용자가 화면을 터치하거나 버튼을 누르는 등의 작업을 수행할 수 있습니다.onPause(): Activity가 일시 중지 상태에 들어갈 때 호출됩니다. 다른 화면으로 전환되거나 앱이 백그라운드로 이동할 때 주로 호출됩니다. 이때 데이터를 저장하거나 애니메이션을 중지하는 등의 작업을 수행할 수 있습니다.onStop(): Activity가 사용자에게 더 이상 보이지 않으면 호출됩니다. 이 시점에 더 이상 필요한 리소스를 해제하거나 데이터 저장 작업을 완료할 수 있습니다.onDestroy(): Activity가 완전히 종료될 때 호출됩니다. 여기서 모든 리소스를 정리하고 메모리 누수가 발생하지 않도록 해야 합니다.예를 들어, 사용자가 다른 앱으로 전환하거나 전화가 올 때 Activity는 onPause()와 onStop() 상태로 전환될 수 있으며, 다시 돌아올 때 onRestart()와 onResume()이 호출됩니다.
Navigation은 사용자가 앱 내에서 화면간에 이동할 수 있도록 하는 기능입니다. 예를 들어, 사용자가 로그인 화면에서 홈 화면으로 이동하거나, 홈 화면에서 설정 화면으로 이동하는 등의 동작을 네비게이션이라고 합니다.
Jetpack Compose에서는 NavHost, NavController, NavGraph, composable 등을 사용하여 이러한 화면 간 이동을 처리합니다. 이들 요소를 활용하여 화면 간의 이동 경로를 정의하고, 사용자의 액션에 따라 화면을 전환할 수 있습니다.
Navigation을 사용하기 위해서는 먼저 Gradle을 사용해 Navigation 라이브러리를 앱에 추가해야 합니다.
먼저, libs.versions.toml에 라이브러리 버전을 추가합니다.