Application Context
getApplicationContext()
를 통해 접근할 수 있다.Activity Context
getContext()
를 통해 접근데이터베이스를 관장하는 AppDatabase 처럼 싱글톤으로 존재하는경우 초기화할때 context가 필요하게 되는데 그때 activity context로 전달하게 된다면 Activity의 생명주기에 따라 어느 시점에 context는 소멸이 될것이다.
하지만 AppDatabase는 싱글톤이기 때문에 해당 Activity Context를 지속적으로 참조하게 되어 메모리 누수가 발생되게 된다. 이럴때는 Application Context 를 사용하는것이 바람직하고
GUI에 관련된 것들에는 Application Context가 정상적으로 동작하지 않을 수 있기 때문에 무조건적으로 Application Context를 쓰는것 또한 바람직하지 않다.
생명주기에 따른 범위(Scope)를 명심하여 Context를 참조하여야 한다.
Dialog와 같이 Activity상의 UI를 제어해야 할 부분이 있다면 ActivityContext (this@ActivityName)을 사용하는 것이 올바르다.