Android 2011. 7. 14. 23:18
 

간만에 포스팅을 합니다. 바쁜척하느라 매일 오긴오는데

와서 제 블로그를 제가 눈팅하는 그런..짓을 합니다 -_-; 



무튼, Activity와 Context 는 비슷해 보이면서도 다릅니다. 저도 아직 두 가지 명확하게 설명을 할

수준은 못되지만, 명확한 개념을 알고싶으시면 조금만 수고를 하셔서 검색을 하시면

다른 훌륭하신분들의 글이 많이 올라와 있습니다.

먼저 Activity 는 안드로이드 어플리케이션의 가장 기본적인 블록으로 전체적으로 한 화면 이라고

보시면 됩니다. 한 화면의 View와 UI 를 뿌리고 관리하며 터치 등 사용자의 입력을 감지합니다.

한 화면이기 때문에 다음 화면으로 넘어가면 거기서 새로운 액티비티가 생성되고 관리하게 됩니다.

반면 Context는 핵심 부품같은 존재로 여러 액티비티의 리소스를 접근하거나 공유할 수 있게 

해줍니다. 설명이 많이 부족하네요 이거 -_-.. 

현재 Activity와 Context를 얻어서 사용해야 할 때가 있습니다. 다이얼로그나 팝업등을 띄울 때인데요

팝업을 예로들면 어느 앱에 로그인을 하려는데 그 로그인창이 팝업창으로 되어 있다면 컴퓨터는

멍청해서 알아서 메인화면 위로 로그인창을 띄우지 못하고 코드상으로 꼭 메인화면 위에서 띄워라

라고 써줘야 합니다. 

popupview = View.inflate(getApplicationContext(), R.layout.sidepopup, null);

이게 그 예인데요 팝업뷰에 파라미터로 Context, int, ViewGroup 이 들어갑니다.

다른거는 넘어가고 Context를 보면 getApplicationContext() 이게 현재 화면의 context를

지정하는 것으로, 저 popupview는 이제 메인화면 위에 뜬다는 소리입니다. 메인화면의 

Context를 받았기 때문이죠.

안드로이드 입문하는 소스들을 보면 대부분 한 클래스에서 모든걸 끝내어 기능만 알아보고 넘어가는

식이 많은데, 이제 그보다 큰 것을 하다보면 위와같이 현재 화면, 또는 현재 클래스에서 모든

작업을 하기란 불가능합니다.

Activity를 예로들어보면 많이 보시는 간단한 Toast를 봐도

Toast.makeText(act,"와이파이에 접속중이 아닙니다.", Toast.LENGTH_LONG).show(); 


세개의 파라미터 중에 첫번째가 액티비티 입니다. 짧은 예제에는 여기에 대부분 this나 

클래스명.this 이런식으로 사용하시는데요. 이게 이 토스트가 뜰 화면을 지정하는 것입니다.

위에 예제의 경우 액티비티가 있는 클래스가 아닌 곳에서 띄우려니, 띄울곳에서 액티비티를 얻어

넘겨주어 그 액티비티를 받아 사용하는 것입니다. 그럼 넘겨준 액티비티에서 뜨겠죠? 


이와같이 넘기거나 사용할 때 현재 액티비티나 Context를 받아야합니다. 받는 방법은

Activity 는
Activity act;
                                                            act = 현재클래스명.this;
이고 

Context는 

Context mContext;
                           mContext =  getApplicationContext();
 
이런식으로 담아두고, 이 변수로 다른 클래스에 넘기기도하고 가져다 쓰기도 하고 그러시면 됩니다

솔직히 100% 아는 내용이 아니라 횡설수설했는데.. 암튼 도움이되셨길 바랍니다. 
posted by 젊은쎄오
: