MainActivity.kt 는 메인 액티비티의 동적 코드를 작성하는 파일입니다
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를 명시한다.
댓글