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에 라이브러리 버전을 추가합니다.