대체 Context란 무엇인가?

Posted by ITPangPang
2016.04.24 17:16 안드로이드(android)/Context



대체 Context란 무엇인가?


안드로이드 개발을 하다보면 가장 많이 사용하기로 세손가락 안에 들지만 Context에 대해 100% 이해하고 사용하는 개발자는 얼마나 될까요?


저도 Context 엄청나게 사용하지만 아직까지도 잘 모르겠습니다.. 그리고 지금 이 글을 쓴다고 해도 100% 이해할 자신은 없습니다.



이번에 Context카테고리를 하나 따로 만들면서 이 부분에 대해 많은 실험과 테스트 위주의 글을 쓰면서 공부를 해 나가려고 합니다.



이번글에서는 왜 Context에 대해 집착하게 됬는지.. 글을 써보려고 합니다.. 



아마 다음글에서 개념부터 시작해서 직접 테스트를 하게 되지 않을까 생각중입니다.



개발을 처음 시작할때 Context를 가장 먼저 보게 되는 경우는 Toast를 띄울때가 아닌가 생각됩니다.



안드로이드를 시작하게 되면

모든언어가 그렇듯이

제일 먼저 Hello World!를 띄우고


그 다음 아마 TextView나 

버튼에 대해 공부하게 될겁니다.


그 다음 순서로

 Toast를 배우지

않을까 생각됩니다.

(저도 그랬고..)


어쨋든 Toast를 쓸때

바로 첫번째 파라미터로

Context를 요구합니다.


모든 책이 그렇고

모든 예제들이 그렇고

제 생각도 그렇고

처음부터 Context에 

대해 설명필요는 없습니다.


오히려 설명 

안하는게

막 안드로이드를 

시작하는 개발자에게

도움이 됩니다


이제 기본예제들을 

다 떼고 본격적으로

개발에 들어가기 시작하면


시시때때로 자주자주

아주아주 많이많이

자꾸자꾸 Context를

넣으라는 곳이 많아집니다.


그럴때마다 

우리들은


이런것들을 써오면서

넘어가곤 합니다.


어느정도 개발을 할때까진

위에꺼를 막 골라쓰고

돌려쓰면서 개발을 합니다.


그러다가,

개발자들이 

Context에 대해

관심을 갖게 되는 

순간이 있습니다


아마 그 시점이

아래와 같은 

경우에 맞닥뜨렸을때 

제일 많지

않을까 생각됩니다.



BadTokenException....

Dialog를 생성할때 많이 접하는 에러입니다.


뭔 항상 봐오던 

NullPointer, ArrayIndexOutofBounds

Exception도 아니고

별 희한한게 튀어나옵니다.


그래서 구글에서 쳐보면

관련자료들이 엄청 많이 나옵니다.


이때 두 가지 유형의 개발자가 있습니다.


첫번째는 

뭐 에러난 부분을 

MainActivity.this 

으로 바꾸세요~ 라거나

getParent로 바꿔주세요~

라는 답변을 듣고

변경한 후에 지나가는 유형..


두번째는

아니 똑같은 Context인데

왜 어느건 에러가 나고

어느건 제대로 작동하는거지?

라는 궁금증을 가지고

Context에 대해 알아보는 유형..

(이게 바로 저..)



두번째 유형이 그래도 

나름 꽤 있지만 찾아보려고 해도


제대로 100% 이해시켜주는 

글도 찾기 힘들고


이해할려하면 또 뭔가 

막히는 부분이 있어서

그냥 넘기시는 분들이 많은것 같습니다.


찾아보면

어느 상황에서 

어떤 Context타입을 써라

어떤 경우에는 쓰면 안된다

등등 표로 자세하게

나와있는 곳도 많이 있습니다.


이후글부터 어떤 경우에 어떤걸 쓰면

어떻게 에러가 나고 왜 이걸 써야하는가?

위주로 글을 써보도록 하겠습니다

저작자 표시 비영리 변경 금지
신고

'안드로이드(android) > Context' 카테고리의 다른 글

대체 Context란 무엇인가?  (3) 2016.04.24
이 댓글을 비밀 댓글로
    • 2016.04.24 19:35
    비밀댓글입니다
    • 정석희
    • 2016.12.25 17:10 신고
    항상 재미있게 보고 있습니다.
    Context 란 무엇일까요... ㅜㅜ
    이 컬럼은 작성한지 꽤나 지난거 같은데.. 후속 내용은 언제쯤 나오는걸까요...
    • ㅠㅠ
      처음에 블로그 개설하고 욕심이 많아서
      이것저것 다 해야지 하고 벌려놨다가..

      요즘 웹이랑 유니티까지 같이 하다보니..

      안드로이드는 프로젝트 하면서 관련된 부분만 글을 쓰게 되네요 ㅠㅠ..

      프로젝트나 하나 끝나면.. 시간내서 써보도록 하겠습니다..