성장기록지
Android Context란? 본문
Context?
애플리케이션 환경의 전역 정보 인터페이스이다.
애플리케이션별 리소스 및 클래스에 접근하거나, 여러 활동에 필요한 작업에 대한 API를 제공한다
Activity Context와 Application Context가 있다.
Activity Context
액티비티 라이프사이클과 연결되어있다.
Application Context
앱의 시작부터 종료까지 살아있는 Context이다.
항상 사용 할 수는 없다. ex) 다이얼로그는 activity Context로만 접근가능하다
어떤 컨택스트를 사용해야할까?
연관되어있는 가까운 컨택스트를 사용하는것이 안전하다.
관련되지 않은 컨택스트 사용 시 앱 크래시로도 이어질 수 있다 .
Activity Context를 사용하지 못하는 예시
ViewModel에서는 사용하면 안된다.
일반적으로 Jetpack Viewmodel이 ui의 생명주기보다 크기 때문에 메모리 누수가 발생할 수 있다.
또한 Destroy된 액티비티의 context를 참조한다면 앱이 크래시가 될 수 있다.
비슷한 맥락으로 싱글톤에 사용한다면 메모리 누수가 발생 할 수 있기에 사용하면 안된다.
메모리 누수?
안드로이드 환경에선 메모리가 제한적이기 때문에
객체가 사용되지 않는다고 판단된다면 GC에 의해 메모리에서 제거되어야한다.
그렇기 때문에 사용되지 않는 객체는 참조를 해제해주어야 하는데, 위와같은 경우에는
사용되지 않는 환경에서도 생존하기 때문에 메모리 누수가 발생한다는 것이다.
메모리 공간이 부족할수록 GC는 메모리 공간 확보를 위해 빈번하게 발생된다.
안드로이드에서 액티비티는 큰 객체이기 때문에 사용되지 않는다면 제거가 필수다.
'안드로이드' 카테고리의 다른 글
MVP 패턴이란? (with Android) (0) | 2025.03.06 |
---|---|
MVC 패턴이란? (with Android) (0) | 2025.03.03 |
안드로이드 네트워크 상태 관리 (네트워크 체커) (0) | 2025.02.18 |