Android, Context에 대해서

이도현·2023년 9월 6일
0

Android 공부

목록 보기
24/30

0. 개요

Context는 앱의 현재 상태에 대한 글로벌 정보에 액세스할 수 있게 해주는 인터페이스이다. 기본적으로 애플리케이션 환경에 대한 전역 정보에 액세스하기 위해 사용되며, 앱 리소스 및 클래스에 액세스하거나 액티비티를 시작하거나 브로드캐스트를 보내거나 인텐트를 수신하기 위한 메서드를 제공한다.
이러한 Context는 Android 개발에 있어서 중요하다. 꼭 같이 알아보자.

1. Context

  • Context는 클래스이다. 애플리케이션에 대한 전역정보에 액세스하기 위한 추상클래스(abstract class)
  • 앱 개발에서 다루게 되는 대부분의 구성요소(Activity, Service, Application 등)은 직 간접적으로 context를 확장(extend)함

2. 종류

  • Application Context: 애플리케이션의 생명 주기 동안 존재하며 액티비티 및 서비스의 생명 주기와는 독립적. 주로 전역적인 설정 또는 리소스에 액세스할 때 사용
  • Activity Context: 액티비티의 생명주기와 연결되어 있음. UI와 관련된 작업을 수행할 대 주로 사용

3. 주의사항

  • 메모리누수: 액티비티 컨텍스트를 잘 못 사용하면(액티비티 생명주기 외부에서 액티비티 컨텍스트를 참조하면 메모리누수 발생) 메모리누수 발생
  • 생명주기: 액티비티 컨텍스트는 해당 액티비티의 생명주기에 바인딩. 따라서 종료될 때 까지 참조하면 안된다.
  • 매개변수로 사용: 대부분의 경우, 라이브러리나 메서드가 Context를 매개변수로 요구할 때 ApplicationContext 또는 ActivitContext 중 어떤 것을 전달해야 할지 문서를 참고해야 함.

4. 사용사례

1) 리소스 및 Asset에 액세스

  • getResource(), getAssets()를 사용하여 앱 리소스 및 자산에 액세스
  • java
String value = context.getResources().getString(R.string.app_name);
  • kotlin
val value = context.resources.getString(R.string.app_name)

2) 시스템 서비스에 액세스

  • getSystemService()를 사용하여 시스템 서비스 (예: Location Service, Notification Service)에 액세스합니다.
  • java
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
  • kotlin
val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager

3) Intent를 사용하여 액티비티 시작

  • startActivity()를 사용하여 새로운 액티비티를 시작할 수 있습니다.
  • java
Intent intent = new Intent(context, NewActivity.class);
context.startActivity(intent);
  • kotlin
val intent = Intent(context, NewActivity::class.java)
context.startActivity(intent)

4)데이터 저장

  • getSharedPreferences()를 사용하여 앱 데이터를 저장 및 검색할 수 있습니다.
  • java
SharedPreferences sharedPreferences = context.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
  • kotlin
val sharedPreferences = context.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE)
profile
좋은 지식 나누어요

0개의 댓글