[Android] - AppCoimpatActivity 클래스에 대해

1. AppCompatActivity 클래스란?

AppCompatActivity 클래스는 클래스명칭대로 Android의 기본화면을 구성하는

Activity 클래스를 상속받아 기능을 확장한 클래스이다.

 

이 클래스의 주된 목적은 하위 호환성(Backward Compatibility)를 제공하여 이전 버전의 Android 기기에서도 최신 Android 기능(특히 Material design과 Toolbar)을 안정적으로  사용할 수 있게하는 클래스이다.

 

2. 기본 구조

부모 클래스 android.app.Activity 안드로이드 앱의 기본 단위로, 사용자와 상호작용하는 단일 화면을 의미
자식 클래스 androidx.appcompat.app.AppCompatActivity Activity를 상속하여 테마, 위젯, 호환성 기능을 추가한 클래스

 

3. AppCompatActivity의 주요 목적과 기능

하위 호환성(Backward Compatibility) Android 버전에 관계없이 동일한 UI/UX를 보장합니다. 예: Material Design 컴포넌트를 Android 4.x에서도 표시 가능
ActionBar / Toolbar 지원 기존 ActionBar 대신 Toolbar를 표준으로 사용 가능하게 함. setSupportActionBar(toolbar)로 쉽게 커스터마이징 가능
Fragment 지원 androidx.fragment.app.Fragment 기반의 프래그먼트를 관리 가능. → 구형 기기에서도 최신 FragmentManager 기능 사용 가능
Material Design 테마 지원 colorPrimary, colorSecondary(이전 colorAccent) 등 머터리얼 속성을 구형 기기에서도 적용
Lifecycle Owner 기능 AppCompatActivity는 LifecycleOwner 인터페이스를 구현하므로, LiveData, ViewModel, LifecycleObserver 등 Jetpack 컴포넌트와 자연스럽게 연동 가능

 

4. Lifecycle 

AppCompatActivity는 Activity의 수명주기를 그대로 따르며, Jetpack 라이프 사이클 컴포넌트와도 자연스럽게 연동된다.

onCreate() Activity 최초 생성 시 레이아웃 초기화(setContentView), 변수 초기화 등
onStart() 화면이 사용자에게 보이기 직전 UI 업데이트 준비
onResume() 화면이 사용자에게 완전히 표시됨 사용자 입력 처리 시작
onPause() 다른 화면에 의해 가려짐 리소스 일시 해제, 애니메이션 중지
onStop() 더 이상 화면이 보이지 않음 데이터 저장, 리소스 해제
onDestroy() Activity 종료 직전 남은 리소스 정리

 

 

- onCreate() 

보통 개발자는 onCreate() 안에서 다음과 같은 일을 한다.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState) // 부모의 초기화 코드 실행 (필수!)
    setContentView(R.layout.activity_main) // 화면 레이아웃 연결
    initViews() // 버튼, 텍스트 등 UI 초기화
    setupListeners() // 클릭 이벤트 연결
    loadData() // DB나 네트워크에서 데이터 로드
}

 

 

  • UI를 화면에 연결하고 (setContentView)
  • 버튼, 텍스트 등의 뷰를 초기화하고,
  • 필요한 데이터나 리소스를 불러오는 작업을 처리한다.

 

왜 super.onCreate()를 반드시 호출해야 할까?

AppCompatActivity (또는 Activity) 내부에서는
테마 초기화, Window 구성, Toolbar 설정 등 시스템 내부 초기화 작업이 super.onCreate() 안에서 이루어짐!

 

따라서, 호출하지 않으면
테마가 적용되지 않거나, 화면이 제대로 표시되지 않는 문제가 생김!