미분류 - 1주차 공부
카테고리: unclassified
태그: 미분류
Layout
LayoutParameters
LayoutParams는 부모 뷰에게 레이아웃 방법을 전달하기위해 뷰에서 사용된다. 모든 뷰는 LayoutParams를 가진다.
ConstraintLayout
ConstraintLayout의 가장 큰 특징은 Constraint(제약)이라고 할 수 있다. 각 뷰에 제약을 주어 뷰 사이의 관계에 따라 위치와 크기를 결정할 수 있다. 가이드라인을 이용해 뷰의 위치를 제한할 수도 있고 다른 뷰를 기준으로 정렬하는 것도 가능하다. 기존의 Layout들에 비해 유연하고 자유롭게 뷰의 레이아웃을 결정할 수 있다. 다만 뷰 사이에 계속 관계를 만들어 주어야 하므로 뷰가 연쇄적이다.
Activity
Android 앱을 만드는 주요 component중 하나로 사용자와 상호작용하기 위한 entry point이다.
Activity LifeCycle
- onCreate
- 호출되는 시점 : 시스템이 Activity를 생성 시 (state == Created)
- 주요 작업 : 전체 생명 주기 동안 한번만 발생해야 하는 기본 시작 로직 (View 생성, 데이터 결합, 레이아웃 정의)
- onStart
- 호출되는 시점 : onCreate 종료시 (state == Started)
- 주요 작업 : 포그라운드에서 상호작용하기 위한 최종 준비 작업
- onResume
- 호출되는 시점 : onStart 종료시 (state == Resumed)
- 주요 작업 : Activity가 재개될때 마다 필요한 초기화 작업
- 특징 : 이벤트가 발생하여 앱에서 포커스가 떠날 때 까지 앱은 Resumed 상태에 머무름 다른 Activity로 이동하거나, 기기의 화면이 꺼지는 등의 이벤트 발생시 Paused 상태로 변경
- onPause
- 호출되는 시점 : 다른 Activity로 이동하거나, 기기의 화면이 꺼지는 등의 이벤트 발생시 (state == Paused)
- 주요 작업 : 사용자가 UI 업데이트를 기다리는 중이라면 Paused상태의 Activity UI 업데이트 가능, 하지만 onPause는 아주 짧게 이루어지므로 시간이 오래걸리는 작업을 실행해서는 안됨
- onStop
- 호출되는 시점 : Activity가 사용자에게 더 이상 표시되지 않을 때 (state == Stopped)
- 주요 작업 : 불필요한 리소스 해제, CPU를 비교적 많이 소모하는 종료 작업 실행
- onDestroy
- 호출되는 시점 : Activity가 제거되기 전 (State == Destoryed)
finish()
호출로 인한 Activity 종료- Configuration Change (기기 회전 또는 멀티 윈도우 모드 등)으로 인한 일시적인 소멸
- 주요 작업 : Activity의 모든 리소스 해제
- 호출되는 시점 : Activity가 제거되기 전 (State == Destoryed)
AppCompat?
Appcompat 라이브러리는 안드로이드 UI가 발전함에 따라 이전 버전에서 발전된 UI를 지원하지 않을 경우 앱 내부의 Appcompat 라이브러리에 포함된 UI를 사용하고 사용자의 안드로이드 버전에서 지원할 경우 사용자 안드로이드의 UI를 사용한다.
Activity Stack
Destroy 되지 않은 Activity는 Stack의 형태로 관리된다. (후입선출)
Intent Flag를 이용해 적당히 이 Stack을 조정할 수 있다.
- FLAG_ACTIVITY_NEW_TASK
- FLAG_ACTIVITY_SINGLE_TOP
- FLAG_ACTIVITY_CLEAR_TOP
Fragment
Fragment LifeCycle
- OnCreate
- 호출되는 시점 : 시스템이 Fragment를 생성 시
- 주요 작업 : 리소스 초기화, 단 UI 초기화는 할 수 없음
- OnCreateView
- 호출되는 시점 : OnCreate 종료시
- 주요 작업 : Layout Inflate
- onViewCreated
- 호출되는 시점 : onCreateView 종료시
- 주요 작업 : Fragment의 View 관련 로직
FragmentManager
Fragment의 View를 Activity의 View 계층에 추가, 삭제, 교체한다.
Lifecycle aware
Lifecycle
Lifecycle은 Activity나 Fragment같은 구성요소의 생명 주기 상태 정보를 가지고있고 다른 객체가 이 상태를 관찰할 수 있게 하는 클래스이다.
LifecycleOwner
LifecycleOwner는 클래스에 Lifecycle이 있음을 나타내는 단일 메서드 인터페이스이다. 이 인터페이스는 개별 클래스에서 Lifecycle의 소유권을 추출해 함께 작동하는 구성요소를 만들 수 있게 한다.