반응형
Android 앱 개발에 사용되는 Context에는 여러 가지 유형이 있습니다.
포인트도 많아 상황에 따라 적절한 Context를 사용하지 않으면 의도하지 않은 메모리 누수나 크래시를 발생시킬 가능성이 있습니다.
Context란?
Context는 추상 클래스이며 Activity와 Application의 수퍼 클래스입니다.
자원의 취득이나 Activity의 기동 등으로 필요하게 되어 Android 앱 개발 중에서도 어디서나 요구되는 것이므로 익숙한 분도 많다고 생각합니다.
우선은 Context에 대해 · Context에는 「Activity의 Context」와 「Application의 Context」의 2 종류가 존재한다
- Activity의 Context는 자주 사용되는 this.
ApplicationContext는 Application#getApplicationContext()
Context 유형
Activity Context
- 활동의 라이프사이클에 따른다.
- Acticity가 종료되었음에도 불구하고 Context에 대한 참조가 남아 있으면 메모리 누수가 발생할 수 있습니다.
Application Context
- View 주변의 메서드에서 사용하면 Activity로 설정한 Theme이 적용되지 않음
- AlertDialog.Builder에서 사용할 때 충돌
- 앱 전체의 라이프사이클에서 사용하는 경우, 충분히 검토한 후 사용
- 라이브러리 초기화에서는 항상 ApplicationContext사용
Context를 얻는 방법
- Activity this
- Activity에서 얻을 수 있습니다.
- Activity 및 ApplicationgetApplicationContext()
- Application에서 얻을 수 있습니다.
- View 및 FragmentgetContext()
- Activity에서 얻을 수 있습니다.
어떻게 구분할 수 있습니까?
기본적으로는 Activity의 생존 기간에 충분할 경우(특히 View 주위)는 ActivityContext을 사용해, 앱 전체의 라이프 사이클로 사용하는 경우만 ApplicationContext을 사용하면 좋을 것 같습니다.
요약
Context는 사용할 기회가 많음에도 불구하고 실제로 어떤 것인지 알기 어렵습니다만, 분위기에서 사용하면 의도하지 않은 메모리 누수나 크래시를 일으키므로 사용할 때는 적절한 Context를 사용하도록 합시다. .
- 어플리케이션의 현재 상태를 갖고 있음
- 시스템이 관리하고 있는 액티비티, 어플리케이션의 정보를 얻기 위해 사용
- 안드로이드 시스템 서비스에서 제공하는 API (리소스, DB, Shared Preferences 등) 에 접근하기 위해 사용
→ getResource() 같은 메소드를 써봤다면 이해하기 쉽다. 이 얘기 하는 거다. - Activity, Application 클래스는 Context 클래스를 상속받은 클래스
반응형
'개발 > 안드로이드 어플' 카테고리의 다른 글
[Android] 데이터베이스 SQLite를 쉽게 작성 (1) | 2022.12.17 |
---|---|
안드로이드 개발 비동기 처리 "AsyncTask"의 기본 기초 (0) | 2022.12.16 |
[안드로이드] Handler 란? 스레드로 View 갱신을 하면 강제 종료! 그럴 때 유용합니다! (0) | 2022.12.08 |
[안드로이드]Looper의 목적은 무엇일까? 또 그 사용법은? (2) | 2022.12.08 |
안드로이드 Activity수명주기 라이프사이클에 대해서 (2) | 2022.12.07 |
댓글