미분류 - 1주차 공부

업데이트:

카테고리:

태그:

Layout

LayoutParameters

LayoutParams는 부모 뷰에게 레이아웃 방법을 전달하기위해 뷰에서 사용된다. 모든 뷰는 LayoutParams를 가진다.

ConstraintLayout

ConstraintLayout의 가장 큰 특징은 Constraint(제약)이라고 할 수 있다. 각 뷰에 제약을 주어 뷰 사이의 관계에 따라 위치와 크기를 결정할 수 있다. 가이드라인을 이용해 뷰의 위치를 제한할 수도 있고 다른 뷰를 기준으로 정렬하는 것도 가능하다. 기존의 Layout들에 비해 유연하고 자유롭게 뷰의 레이아웃을 결정할 수 있다. 다만 뷰 사이에 계속 관계를 만들어 주어야 하므로 뷰가 연쇄적이다.

Activity

Android 앱을 만드는 주요 component중 하나로 사용자와 상호작용하기 위한 entry point이다.

Activity LifeCycle

  1. onCreate
    • 호출되는 시점 : 시스템이 Activity를 생성 시 (state == Created)
    • 주요 작업 : 전체 생명 주기 동안 한번만 발생해야 하는 기본 시작 로직 (View 생성, 데이터 결합, 레이아웃 정의)
  2. onStart
    • 호출되는 시점 : onCreate 종료시 (state == Started)
    • 주요 작업 : 포그라운드에서 상호작용하기 위한 최종 준비 작업
  3. onResume
    • 호출되는 시점 : onStart 종료시 (state == Resumed)
    • 주요 작업 : Activity가 재개될때 마다 필요한 초기화 작업
    • 특징 : 이벤트가 발생하여 앱에서 포커스가 떠날 때 까지 앱은 Resumed 상태에 머무름 다른 Activity로 이동하거나, 기기의 화면이 꺼지는 등의 이벤트 발생시 Paused 상태로 변경
  4. onPause
    • 호출되는 시점 : 다른 Activity로 이동하거나, 기기의 화면이 꺼지는 등의 이벤트 발생시 (state == Paused)
    • 주요 작업 : 사용자가 UI 업데이트를 기다리는 중이라면 Paused상태의 Activity UI 업데이트 가능, 하지만 onPause는 아주 짧게 이루어지므로 시간이 오래걸리는 작업을 실행해서는 안됨
  5. onStop
    • 호출되는 시점 : Activity가 사용자에게 더 이상 표시되지 않을 때 (state == Stopped)
    • 주요 작업 : 불필요한 리소스 해제, CPU를 비교적 많이 소모하는 종료 작업 실행
  6. onDestroy
    • 호출되는 시점 : Activity가 제거되기 전 (State == Destoryed)
      • finish()호출로 인한 Activity 종료
      • Configuration Change (기기 회전 또는 멀티 윈도우 모드 등)으로 인한 일시적인 소멸
    • 주요 작업 : Activity의 모든 리소스 해제

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

  1. OnCreate
    • 호출되는 시점 : 시스템이 Fragment를 생성 시
    • 주요 작업 : 리소스 초기화, 단 UI 초기화는 할 수 없음
  2. OnCreateView
    • 호출되는 시점 : OnCreate 종료시
    • 주요 작업 : Layout Inflate
  3. onViewCreated
    • 호출되는 시점 : onCreateView 종료시
    • 주요 작업 : Fragment의 View 관련 로직

FragmentManager

Fragment의 View를 Activity의 View 계층에 추가, 삭제, 교체한다.

Lifecycle aware

Lifecycle

Lifecycle은 Activity나 Fragment같은 구성요소의 생명 주기 상태 정보를 가지고있고 다른 객체가 이 상태를 관찰할 수 있게 하는 클래스이다.

LifecycleOwner

LifecycleOwner는 클래스에 Lifecycle이 있음을 나타내는 단일 메서드 인터페이스이다. 이 인터페이스는 개별 클래스에서 Lifecycle의 소유권을 추출해 함께 작동하는 구성요소를 만들 수 있게 한다.