Android Context 정리
Context란? + 안드로이드의 프로세스 / 어플리케이션 차이
정리하면 Application Context(applicationContext
)는 어플리케이션 전역적으로 하나만 존재하는 싱글턴 객체이며 Activity Context(this
)는 Activity life-cycle을 따르는 Context다.
View를 조작하거나 어떤 Activity와 밀접한 관련이 있는 경우 this
를, 나머지 경우(특히 싱글턴이나 DB)에는 applicationContext
를 사용하면 된다.
Note)applicationContext
도 어떤 Context
를 통해서 접근해야 한다. 사실 applicationContext
형태로 접근하는건 앞의 kt this.
이 생략된 것인데, 여기서 주의해야 할 점이 onCreate()
이전에는 this
Context가 제대로 초기화되기 이전이라서 kt this.applicationContext
에 접근하면 NPE가 발생한다. 그래서 필드 초기화에 바로는 못쓰고 lateinit
해야 한다.
* this != this.baseContext
다. 둘 다 Activity Context를 반환하긴 하지만 다르기 때문에 Context 잘못 넘기면 프로그램 강제 종료된다.
외부 클래스에서 Activity의 Context에 접근해야 하는 경우
1
2
3
4
class foo {
val mContext : Context = this
}
* 내부 클래스의 경우 그냥 this@OuterCls
를 사용하면 된다.
This post is licensed under CC BY 4.0 by the author.