“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”
직역하면 '맥락'이란 뜻인데, 안드로이드를 잠깐이라도 써 본 사람들은 쉽게 들어봤을 것이다.
당장 많이 사용되는 Toast에서도 첫 매개변수로 Context를 요구한다.
Toast.makeText(context, message, duration).show()
AlertDialog.Builder(context).create()
가장 흔하게 많이 쓰이는 경우가 아닌가 싶다
영어가 짧은 관계로 번역기의 힘을 빌려보겠다
애플리케이션 환경에 대한 글로벌 정보에 대한 인터페이스입니다. Android 시스템에서 구현을 제공하는 추상 클래스입니다. 이를 통해 애플리케이션 별 리소스 및 클래스에 액세스 할 수있을뿐만 아니라 활동 시작, 인 텐트 브로드 캐스트 및 수신 등과 같은 애플리케이션 수준 작업에 대한 상향 호출도 가능합니다.
구글 문서에 의하면 Context는 Android에서 구현을 도와주는 추상클래스의 형태로 제공되며
이를 활용하여 리소스 및 클래스에 접근하거나 애플리케이션 수준에서의 작업을 가능하게 해준다고 나와있다.
그 외에도 액티비티의 정보(현재 상태)를 얻기 위해서 사용되기도 한다.
Context를 요구하는 클래스를 사용할 때는 어떤 Context를 요구하는지
잘 파악하고 사용해야한다.
이를테면 Activity Context를 요구하는데 Application Context를 사용하면
Activity의 생명주기가 끝나서 종료되어도 Application Context는 메모리에 그대로 남아서
메모리 누수가 발생할 수도 있기 때문이다.
Fragment나 RectclerViewAdapter 등 Context를 기본적으로 제공하지 않는 곳이 있다.
Fragment는 생명주기 중 onAttach()를 오버라이딩하면 인자로 context를 받아온다.
RecyclerViewAdapter는 onCreateViewHolder 메소드에서 인자로 받아오는
parent(viewGroup)에서 context를 가져올 수 있다.
개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.