[Android/안드로이드/Context] ApplicationContext vs ActivityContext ?!!
2020. 5. 29. 16:32ㆍAndroid/깨알 개념 정리
갑자기 이 질문을 받았을 때 얼마나 당황했는지..
반성의 의미로 다시 차근차근 정리해보기
먼저, Context 란?
developers 사이트에 의한 개념은 이렇다
- interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
해석
- 어플리케이션 환경에 대한 전역 정보에 접근하기 위한 인터페이스, abstract 클래스이며 안드로이드 시스템에 의해 구현된다
- Context를 통해 어플리케이션의 특화된 리소스나 클래스에 접근할 수 있을 뿐 아니라 application-level의 작업, Activity 실행, Intent 브로드캐스팅, Intent 수신 등과 같은 응용 프로그램 수준의 작업을 수행하기 위한 API를 호출할 수 있다.
즉, 현재 사용되고 있는 어플리케이션(액티비티)에 대한 전체적인 정보를 담고 있는 객체라 할 수 있다.
그렇다면 Application Context 와 Activity Context는 각각 무엇일까
1. Application Context
-
Application의 Life-Cycle을 따르며 어플리케이션 실행 - 종료까지 동일한 객체를 참조한다
-
getApplicationContext(), getApplication() 으로 사용 가능하다
2. Activity Context
-
현재 Activity의 Life-Cycle을 따르며 Activity.onDestroy()가 호출될 때 소멸된다
-
getContext(), getBaseContext(), View.getContext(), MyActivity.this로 사용 가능하다
Activity Context 는 null 오류를 발생시킬 수 있어 대체적으로 Application Context를 권장하고 있으나 다이얼로그(대화 상자), 액티비티 시작, layout inflate 등 필수적으로 Activity Context를 사용해야 하는 경우에는예외적으로 Activity Context 를 사용해 주어야 한다.
'Android > 깨알 개념 정리' 카테고리의 다른 글
Android 개념 정리 - 1 (객체, 클래스, 자바 컬렉션, 추상 클래스, 인터페이스, 자료구조) (0) | 2022.01.31 |
---|---|
프로그래밍 정리 (SOLID 원칙, 객체지향 프로그래밍, 함수형 프로그래밍, 의존성 주입, 스레드 세이프(Thread safe), TDD) (0) | 2022.01.31 |
[Firebase PUSH] Android 앱에서 background(백그라운드), foreground(포그라운드) 메시지 수신 정리 (0) | 2020.06.11 |
[Android/안드로이드] kotlin , intent 로 객체 전달 (0) | 2020.05.29 |
[Android/안드로이드] ConstraintLayout 에 대하여 (1) | 2020.05.29 |