Activity & Fragment

Park Jae Hong·2022년 9월 8일
0

Activity Context

Context

: App 전역의 정보를 담고(관리)있는 Interface

  • 리소스 및 클래스 접근

  • Activity 실행 등을 관리


Application Context

: process 의 lifetime을 따르는 singleton global Application Context

❗Activity 의 Context 를 계속 전달하는 것은 좋지 않다. 단, 필요에 따라 합당한 이유가 있다면 사용할 것.


Activity

AppCompat Activity 를 상속 받아서 Activity 를 구현하는 이유는?

Jetpack Compose ? Component Activity 를 상속 받는 이유 ?


Activity state & Lifecycle

Lifecycle

  • App process

  • foreground
    : 사용자가 App과 상호작용 가능할 때.

  • background
    : 사용자가 App과 상호작용 불가능할 때.

lifecycle callback은 언제되고, 적합한 작업은 무엇일까?

  • onCreate
    : 데이터(변수 등) 초기화 (인스턴스 화)

  • onStart
    : 화면이 보여지기 시작했을 때 필요한 기능을 정의(Listener,Animation 추가)

  • onResume
    : (foreground 상태) 작업을 많이 하지 않음 -> 멀티 스레드가 생기면서 너무 많이 호출되기 때문 !

  • onPause
    : onResume 에 대응 되는 작업

  • onStop
    : onStart 에 대응 되는 작업

  • onDestory
    : onCreate 에 대응 되는 작업

❗ onDestory 에서 작업을 거의 하지 않는다(자원 반납 등)
-> 작업을 오래 하지 않는 경우, 메모리가 부족한 경우 등 비정상적 종료가 되면 onStop 에서 프로세스가 종료되기 때문에 onDestory를 보장 하지 않는다.

Callback 함수

  • 다른 함수의 인자로 전달 함수

  • 특정 이벤트가 발생 후 호출되는 함수

❗ Callback 함수 직접 구현해보기

Lifecycle Event 변경을 알리는 방식은 ?

  • Lifecycle aware component 는 무엇인가?
    : Activity 및 fragment 다른 컴포넌트의 생명주기 상태가 변경될 때 이에 대응해주는 라이브러리이다.
    (생명주기 인식 컴포넌트를 사용하면 더 체계적이고 가벼운 코드를 작성하고 유지보수에 용이하다.)
    장점
    : 일반적인 패턴은 활동과 프래그먼트의 수명 주기 method 에 종속 구성요소의 작업을 구현한다. 하지만 이 패턴으로 인해 코드 구성이 나빠지고 오류가 증가하게 됩니다. Lifecycle aware component를 사용하면, 수명 주기 method에서 구성요소 자체로 종속 구성요소의 코드를 옮길 수 있다.

왜 생명주기가 중요한가?

: 안드로이드 프레임 워크의 핵심 구성요소(Activity, Service, Provider, Receiver)들은 생명주기를 가지고 있다. 생명주기는 운영체제 또는 프로세스 안에 실행 중인 프레임워크 코드에 의해서 관리된다. 생명주기는 안드로이드가 동작하는 방식의 핵심이 되는 부분이다. 수명 주기를 준수하지 않으면 메모리 누수 또는 애플리케이션의 비정상 종료가 발생할 수 있다.


Fragment

: 특정 영역을 재사용하고 싶을때 사용

  • Modularity

  • Reusability

❓ 특정영역을 재사용하고 싶을 때 Fragment 대신 Activity는 사용 가능한가 (이유는 무엇인가)

Fragment Lifecycle

(Activity Lifecycle 과의 차이)

  • onCreate
    : View와 관련 없는 데이터 초기화

  • onCreateView
    : View 생성 작업 (이외에는 하지 않는게 좋음) -> 각 parameter 의미❓

  • onViewCreate

Activity 와 Fragment 의 관계는 ❓

Navigation 사용할 때, Fragment 상태 유지 방법

profile
The people who are crazy enough to think they can change the world are the ones who do. -Steve Jobs-

0개의 댓글