액티비티 생명주기
Activity 의 모든 인스턴스는 생명주기를 갖는다. 생명주기 동안에 네 가지 상태
- 실행 재개 resumed
- 화면에서 전체를 보고, 포그라운드에서 작동
- 사용자가 현재 상호 작용
- 일시 중지 paused
- 액티비티가 포그라운드에서는 작동 X
- 화면의 일부가 보이는
- 중단 stopped
- 메모리 존재 O
- 뷰가 화면에서 완전히 가려졌을 때
- 존재하지 않음 nonexistent
- 메모리 존재 X
- 사용자가 보거나 상호작용하기 위한 뷰 X
으로 상호 전환된다.
Activity 의 서브 클래스는 생명주기의 전환 시점에 생명주기 콜백 lifecycle callback 함수를 호출해 필요한 일을 처리
생명주기 콜백 Lifecycle callback
onCreate(Bundle?)
- 위젯을 인플레이트해 뷰 객체로 생성한 후 화면에 보여준다 (setContentView(int)) 호출
- 인플레이트된 위젯의 객체 참조를 얻음
- 사용자와의 상호 작용을 처리하기 위해 위젯에 리스너 설정
- 외부의 모델 데이터를 연결
최상위 수준 속성: class 바깥쪽에 선언한 변수
1. 특정 클래스의 인스턴스를 생성하지 않고 바로 사용할 수 있으므로 애플리케이션이 실행되는 동안 속성값을 계속 보존해야 할 때 사용
2. 애플리케이션 전체에서 사용하는 상수를 정의할 때 사용
override 함수
override 키워드를 통해 오바라이드하는 함수가
슈퍼클래스에 있는지 컴파일러에게 확인하라고 요청
오타로 인한 에러 발생을 런타임이 아닌 컴파일 시점에 방지
액티비티 회전시키기
onCreate(Bundle?) called
onStart() called
onResume() called
==================> 회전 발생
onPause() called
onStop() called
onDestroy() called
==================> 액티비티 재생성
onCreate(Bundle?) called
onStart() called
onResume() called
장치의 방향이 바뀔 때마다 현재의 인스턴스는 완전히 소멸되고, 새로운 액티비티 인스턴스를 생성
장치 구성 변경과 액티비티 생명주기
장치를 회전화면 장치 구성 device configuration 이 변경
런타임 구성 변경 runtime configuration change 이 생길 때 새로운 구성에 더 잘 맞는 리소스로 대체하기 위해 현재 인스턴스를 소멸시키고 새로운 구성에 맞는 인스턴스를 생성
+) 로그 레벨
android.util.Log 클래스
// DEBUG 로그 레벨로 메시지를 로깅
Log.d(TAG, "Current question index: $currentIndex")
try {
val question = questionBank[currentIndex]
} catch (ex: ArrayIndexOutOfBoundsException) {
// 스택에 저장된 예외의 기록과 함께 ERROR 로그 레벨로 메시지를 로깅
Log.e(TAG, "Index was out of bounds", ex)
}
728x90
'안드로이드' 카테고리의 다른 글
MVC, 모델 - 뷰 - 컨트롤러 (0) | 2023.07.19 |
---|---|
View, Resource (0) | 2023.07.13 |