Jetpack Compose에서 Activity가 뭐예요?
✨ Jetpack Compose에서 Activity가 뭐예요? (안드로이드 초보자도 이해할 수 있게!)
Android 개발을 시작하면 가장 먼저 마주치는 개념 중 하나가 바로 Activity입니다. Jetpack Compose를 쓴다고 해서 Activity가 사라진 건 아니에요. 다만 UI를 구성하는 방식만 달라졌을 뿐입니다.
✅ Activity는 화면을 담당하는 “틀”
Activity는 안드로이드 앱의 한 화면을 담당하는 기본 단위입니다.
- 연락처 목록 화면
- 연락처 편집 화면
- 검색 화면
이런 것들은 각각 하나의 Activity일 수 있어요.
Compose에서도 마찬가지로, 앱을 실행하면 Activity가 실행되며 화면이 표시됩니다.
🧱 XML 대신 Kotlin 코드로 UI 만들기
기존 Android에서는 UI를 XML 파일로 만들고 setContentView()
로 연결했죠?
<!-- 기존 방식 -->
<Button
android:text="Click Me"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Compose에서는 더 이상 XML을 쓰지 않고, Kotlin 코드로 직접 UI를 만듭니다.
// Compose 방식
Button(onClick = { /* 클릭 시 동작 */ }) {
Text("Click Me")
}
📦 Activity와 Compose 연결하기
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 여기서부터 Compose UI 시작!
setContent {
MyComposeApp() // Composable 함수로 UI 구성
}
}
}
ComponentActivity
를 상속해야 Compose를 쓸 수 있어요.setContent
안에 우리가 만든 Composable 함수들을 배치합니다.
🧭 여러 화면은 어떻게 이동하나요?
예전에는 여러 Activity를 만들고 Intent
로 이동했죠.
Compose에서는 하나의 Activity 안에서 여러 화면을 Composable로 나눠서 구성할 수 있어요.
NavHost(navController, startDestination = "home") {
composable("home") { HomeScreen() }
composable("details") { DetailScreen() }
}
Navigation 라이브러리를 활용하면, 화면 이동도 훨씬 간편합니다.
♻️ 생명주기(Lifecycle)도 똑같이 존재해요
onCreate()
, onStart()
, onPause()
같은 생명주기 메서드는 Compose에서도 그대로 사용됩니다.
그리고 Compose는 자체적으로 라이프사이클을 감지해서 필요한 작업만 자동으로 업데이트해줘요.
추가로,remember
, LaunchedEffect
, DisposableEffect
같은 Composable 전용 기능으로도 생명주기를 활용할 수 있습니다.
🔁 정리해볼까요?
항목 | 기존방식 | Jetpack Compose 방식 |
UI 작성 방식 | XML 파일 + setContentView | Kotlin 코드 + setContent 블록 |
화면 구성 | 여러 개의 Activity | 하나의 Activity + 여러 Composable 화면 |
UI 업데이트 | 직접 View 수정 | 상태만 바꾸면 Compose가 자동 반영 |
생명주기 | Activity에서 관리 | Activity + Composable 효과로 관리 |
✨ 마무리: Compose는 ‘구성’ 중심이에요
Compose는 상속보다는 Composable 함수들을 조립해서 앱을 만들어요.
초보자라면 '상속' 대신 필요한 기능을 함수로 만들고, 조립해서 화면을 완성하는 Compose 방식이 오히려 더 직관적일 수 있습니다.