-
[Android Studio] Context란? Context의 정의, 종류와 사용 방법개발 끄적끄적/Android 2020. 6. 5. 15:11반응형
안드로이드 개발을 하다 보면 자주 사용되는 context란 것이 있습니다. 지금까지 정확한 기능을 모르고 사용했지만 이번 기회에 context의 기능과 역할을 알아보겠습니다.
개념에 대해 알아볼 때는 공식 문서만큼 정확한 것이 없다고 생각합니다.
아래는 Android Developer 사이트에서 말하는 Context의 정의입니다.
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.
응용 프로그램 환경에 대한 글로벌 정보에 대한 인터페이스입니다. 이것은 안드로이드 시스템에 의해 구현되는 추상 클래스입니다. 응용 프로그램 별 리소스 및 클래스에 대한 액세스는 물론 활동 시작, 방송 및 수신 의도 등과 같은 응용 프로그램 수준 작업을위한 업 콜에 액세스 할 수 있습니다.
즉, context는 추상클래스이며 Application에 관해 시스템이 관리하고 있는 정보에 접근할 수 있는 것입니다. Context를 통해 앱에 특화된 리소스나 클래스에 접근할 수 있습니다.
ex) Activity 실행, intent 수신 등과 같은 응용 프로그램 수준의 작업
Android에서 어플리케이션의 정보를 관리하는 것은 시스템이 아니고 ActivityManagerService라는 것입니다.
따라서 어플리케이션과 관련된 정보에 접근할 때는 ActivityManagerService를 통해야 합니다.
여기서 Context가 사용됩니다.
- 자신이 어떤 어플리케이션을 나타내고 있는지 알려주는 ID
- ActivityManagerService에 접근할 수 있는 통로
Context는 위와 같은 역할을 합니다.
Context 종류
- Application Context
- Activity Context
안드로이드 프레임워크에서 Context는 위와 같이 2가지 종류로 나뉩니다.
Application Context는 application의 생명주기에 맞춰 종료될 때까지 동일한 객체입니다.
반면, Activity Context는 activity의 생명 주기에 접목됩니다. 즉, 액티비티가 onDestroy() 될 경우 사라지는 객체입니다.
이를 참고해서 코드 작성 시 목적에 맞게 알맞는 context를 골라 참조해야 하는 것입니다.
Context 참조
- getApplicationContext()
- getBaseContext()
getApplicationContext()는 application context를 반환합니다.
getBaseContext()는 activity context를 제공합니다.
Context 사용
1. 어플리케이션 리소스 접근
Context의 getResource() 메소드로 어플리케이션의 리소스를 얻을 수 있습니다.
// kotlin var str = applicationContext.resources.getString(R.string.myString)
// Java String str = getResources().getString(R.string.myString);
2. Application Preferences
Context의 getSharedPreferences() 메소드를 이용해 SharedPreferences 클래스를 사용할 수 있습니다.
// kotlin var item = applicationContext.getSharedPreferences("", Context.MODE_PRIVATE)
// Java SharedPreferences item = getSharedPreferences(“”, MODE_PRIVATE);
그 외에도 다른 어플리케이션의 기능을 접근할 수 있습니다.
- System-level 서비스의 provider 요청 ( Location 등 )
- Application 단위의 파일, 데이터베이스 접근
- Application Permission
참고문헌
반응형'개발 끄적끄적 > Android' 카테고리의 다른 글
[Android Studio] 길이 단위 - dp, dpi, px, sp 의 차이점 (0) 2020.06.18 [Android Studio] ImageView 속성 알아보기 - ScaleType & Background vs Src (0) 2020.06.18 [Android Studio] SQLite을 이용한 내장 DB 활용하기 (0) 2020.06.05 [Android Kotlin] Retrofit2 사용방법 - Interface와 Data Class까지 (1) 2020.06.04 [Android Kotlin] 카카오맵 사용하는 방법 (해시키 등록) + 내 위치 표시하기 (0) 2020.06.03