본문 바로가기
프로그래밍/Android

(Android) ActivityContext? ApplicationContext?

by LiveData 2018. 12. 21.
반응형


안드로이드 스튜디오 툴을 해보신 분이면 Context를 한번 쯤 보셨을 거예요.
이렇게 친숙한 Context 지만 실행할 때는 비중이 많이 없고
그냥 지나치기 쉽죠.. ( 저도 그냥 지나쳤었..)

 
그럼 Context에 대해 간략히 알아봅시다.


Context 란?

  " 현재 사용되고 있는 어플리케이션(또는 액티비티)에 대한 포괄적인 정보를 지니고 있는 객체"

뭐 설명 자체는 간단합니다. , context를 사용할 때에도 정보 객체 자체를 전달만 해주는 용도로 사용되죠.

ApplicationContext? ActivityContext?

Context 종류에는 크게 ApplicationContext와 ActivityContext가 있습니다.
둘 다 최상위 부모로 Context를 가지지만 몇 가지 차이를 가지고 있습니다.

ApplicationContext
  : context는 application life-cycle을 따르며 어플리케이션이 실행되어 종료될 때까지 동일한 객체를 참조합니다.
   사용 - getApplicationContext(), getApplication()

ActivityContext
  : context는 activity life-cycle을 따르며 activity가 onDestroy() 될 때 context는 사라지게 됩니다.
   사용 - getBaseContext() , ActivityName.this


구별해서 사용?

대체적으로 ApplicationContext를 권장하고 있습니다.
 이유는 단지! 수명이 길고 Null 오류를 피할 수 있어서입니다.

하지만, 무조건 ActivityContext를 사용해야 할 때는 어쩔 수 없습니다.
  ex) 다이얼로그(대화상자), 액티비티 시작, layout inflate 등... 제약이 있는 곳


혹시 개발할 때 무심코 Context에 대해 한 번쯤 생각하시고
 " 아 이때는 ActivityContext가 들어가고 이때는 ApplicationContext가 들어가구나!"
라는 정도로 이해하시면 좋을 것 같아요. ㅎㅎ


반응형