티스토리 뷰
ActivityContext 와 AndroidContext 는 둘 다 Context 를 구현하고 있다.
Context 는 앱 환경에 대한 전역 정보에 접근하기 위한 인터페이스로,
애플리케이션의 현재 상태에 대해 시스템에 제공하는 정보에 접근할 수 있게 해준다.
Context 를 통해 리소스, 데이터베이스, 프리퍼런스, 시스템 서비스 등에 접근할 수 있는 메소드를 제공한다.
ActivityContext
특정 액티비티에 바인딩되어 있으며, 액티비티의 생명주기에 따라 존재한다.
따라서 액티비티가 파괴되면 Context 도 더 이상 유효하지 않다.
용도
UI 와 밀접하게 연관된 작업에 사용된다.
예시)
새로운 액티비티 혹은 다이얼로그를 띄울 때
액티비티의 레이아웃 리소스테 접근할 때
액티비티 스태틱 서비스에 접근할 때
주의 사항
ActivityContext 는 장기간 보관하면 메모리 누수의 위험이 있다.
Activity 가 파괴될 때 해당 Context 도 같이 정리되어야한다.
ApplicationContext
애플리케이션의 생명주기가 동일하며, 앱이 실행되는 동안 항상 유효하다.
애플리케이션 전체에 걸쳐 공유되는 컨텍스트다.
용도
애플리케이션 수준의 작업에서 사용된다.
예시)
Singleton 과 같이 애플리케이션 전체에서 사용되는 인스턴스를 초기화할 때
애플리케이션 전역에서 접근해야하는 리소스에 접근할 때
주의 사항
앱 전체에서 공유되기 때문에 Activity 에 의존적인 작업에 사용하지 않는 것이 좋다.
ex) ApplicationContext 를 사용해서 Dialog 를 띄우면 에러 발생
적절한 Context 사용은 안드로이드 개발에서 중요한 부분으로,
Context 의 범위와 생명 주기를 잘 이해하고 상황에 맞게 선택하여 사용해야한다.
'정리하기 > android' 카테고리의 다른 글
parcelize 어노테이션 (0) | 2024.01.10 |
---|
- Total
- Today
- Yesterday
- vue.js
- awesome-vue
- backbone.js
- 함수
- browserify
- Typescript
- eventbus
- MarionetteJS
- common.js
- 자바스크립트
- 외부모듈
- #가상머신
- framework
- 원하는것이있다면끝까지버텨라
- js
- nodejs
- Android
- mocha.js
- vuex
- node.js
- javascript
- vue
- node
- nextTick
- angular
- awe-some
- AndroidContext
- git tag
- 뉴욕
- marionetts.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |