본문 바로가기
공부/안드로이드

[안드로이드/코틀린] MainActivity 초기 구성 기초

by Lagooni 2022. 4. 25.

MainActivity.kt 는 메인 액티비티의 동적 코드를 작성하는 파일입니다

MainActivity 클래스

MainActivity클래스는 Activity클래스를 상속 받습니다. 

AppCompatActivity 클래스는 오래된 안드로이드 버전과 호환성을 유지하고 새로운 기능이 추가된 액티비티 클래스 입니다.

AppCompatActivity의 특징

1. setSupportActionBar(Toolbar): API를 사용하여 action item, navigation mode 등을 포함하는 action bar를 지원합니다.

2. Theme.AppCompat.DayNight: AppCompatDelegate.setDefaultNightMode(int) API를 사용하여 다크 모드를 지원합니다.

3. getDrawerToggleDelegate() API를 사용하여 DrawerLayout과 통합합니다.

안드로이드 스튜디오 1.5버전 부터 새로 생성하는 모든 액티비티 클래스가 기본적으로 AppCompatActivity를 상속받게 됩니다.

onCreate() : 클래스가 생성될 때 맨 처음 호출되는 콜백 함수(초기화 코드를 넣는 곳이다.)

(콜백함수란? 이벤트가 발생하거나 특정 시점에서 실행되는 함수)

매개변수인 savedInstanceState Bundle?

특정 상황에서 액티비티가 저장한 값을 다시 불러오는 값이다.

왜 필요할까?

사용자가 뒤로가기를 눌러 액티비티가 종료된 경우 혹은 화면이 세로모드에서 가로모드 전환 시 onCreate함수가 다시 호출된 경우 등등..

다른 액티비티를 호출하면 전역변수에서 설정한 값이 모두 초기화 된다. 이때 변경된 값을 유지하고 싶다면 savedInstanceState를 사용한다.

화면 회전 라이프 사이클: 
onPause() → onSaveInstanceState() → onStop() → onDestory() → onCreate() → onStart() → onResume()


super는 상위클래스를 뜻하며 상위클래스의 onCreate()를 먼저 실행하라는 뜻이다.

setContentView()는 보여줄 레이아웃을 지정해준다. R.layout.activity_main은 activity_main.xml파일을 지칭한다.

R은 자동 생성된 클래스로서 모든 resource를 식별할 수 있는 변수가 정의된 클래스이다.

R뒤에 .을 붙여 리소스 종류를 적는다. 


AndroidManifest.xml의  exported 속성은 앱에서 만든 액티비티, 서비스와 같은 컴포넌트들이 외부 앱에 의해 실행될 수 있는지를 정의하는데 쓰인다.

기본값이 true이고 공개하고 싶지 않은 경우 false를 명시한다.

댓글