잘 정리해보자

context 개념 본문

Android

context 개념

토마토오이 2019. 9. 19. 18:07

Context : 여러 activity 간 리소스를 공유하거나 설정등에 접근하기 위해 사용

-> Activity의 this로 받아올 수도 있지만, 직접 참조하는 this는 메모리릭(메모리 누수)를 발생시키므로

     getApplicationContext() 메서드를 통해 받아오는 게 나음

 

 

getApplicationContext() : 어플리케이션의 context, 현재 Activity의 context , 앱의 lifeCycle에 해당하는 context까지 사용됨

(라이프사이클은 onDestroy되기 전까지 살아있음)

 

getContext() : 현재 활성화 된(실행되고 있는) Activity의 context ( this와 같다)

 

getBaseContext() : 다른 context를 접속하려 할 때 사용. context 참조

 

this : 현재 활성화 된 Activity의 context(getContext()와 같다)

 

 

 

  • 메모리릭(메모리 누수) : 개발자가 context를 계속 참조해서 가비지컬렉션(시스템에서 사용하지 않는 동적으로 할당된 메모리 블럭을 찾아 자동으로 사용 가능하게 회수하는 것) 이 수행되는 것을 막는 경우이다. 결과, 많은 메모리를 잃게 되며 메모리 부족 현상이 나타남

  • this를 이용해서 context 참조를 할 경우, 해당 Activity클래스를 나타내는 객체가 정적으로 가르켜 질 것이고 메모리에 남아있게 된다.

          -> 이렇게 되면, 사용되는 메모리로 인식되서 가비지컬렉션 대상에서 제거됨 (메모리 누수 발생)

               (activity 생명주기가 완료(onDestroy()) 되기 전에 참조가 제거되지 않으면 메모리 누수)

  • 메모리 누수를 피할 수 있는 방법 :

    1. 자신의 범위 밖으로 context를 벗어나지 않는 것.

    2. getApplicationContext()메서드를 사용 하는 것.

 

'Android' 카테고리의 다른 글

webView 사용  (0) 2019.09.20
activity 라이프 사이클  (0) 2019.09.19
Layout, view 설명  (0) 2019.09.19
Comments