Activity

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를 정의합니다.

Lifecycle

Activity는 시작(생성)부터 종료(파괴)까지 여러 가지 상태(생명주기)를 거칩니다. 이는 앱이 백그라운드로 전환되거나, 새로운 화면으로 넘어가거나, 앱이 종료될 때 어떻게 동작해야 하는지를 관리하는 데 매우 중요합니다.

예를 들어, 사용자가 다른 앱으로 전환하거나 전화가 올 때 ActivityonPause()onStop() 상태로 전환될 수 있으며, 다시 돌아올 때 onRestart()onResume()이 호출됩니다.

Navigation

Navigation은 사용자가 앱 내에서 화면간에 이동할 수 있도록 하는 기능입니다. 예를 들어, 사용자가 로그인 화면에서 홈 화면으로 이동하거나, 홈 화면에서 설정 화면으로 이동하는 등의 동작을 네비게이션이라고 합니다.

Jetpack Compose에서는 NavHost, NavController, NavGraph, composable 등을 사용하여 이러한 화면 간 이동을 처리합니다. 이들 요소를 활용하여 화면 간의 이동 경로를 정의하고, 사용자의 액션에 따라 화면을 전환할 수 있습니다.

Gradle에 의존성 추가

Navigation을 사용하기 위해서는 먼저 Gradle을 사용해 Navigation 라이브러리를 앱에 추가해야 합니다.

먼저, libs.versions.toml에 라이브러리 버전을 추가합니다.