Android Context 정리
Context란? + 안드로이드의 프로세스 / 어플리케이션 차이
정리하면
Application Context(applicationContext
)는 어플리케이션 전역적으로 하나만 존재하는 싱글턴 객체이며
Activity Context(this
)는 Activity life-cycle을 따르는 Context다.
View를 조작하거나 어떤 Activity와 밀접한 관련이 있는 경우 this
를, 나머지 경우(특히 싱글턴이나 DB)에는 applicationContext
를 사용하면 된다.
Note ) applicationContext
도 어떤 Context
를 통해서 접근해야 한다.
사실 applicationContext
형태로 접근하는건 앞의 this.
이 생략된 것인데, 여기서 주의해야 할 점이 onCreate()
이전에는 this
Context가 제대로 초기화되기 이전이라서 this.applicationContext
에 접근하면 NPE가 발생한다.
그래서 필드 초기화에 바로는 못쓰고 lateinit
해야 한다.
* this != this.baseContext
다. 둘 다 Activity Context를 반환하긴 하지만 다르기 때문에 Context 잘못 넘기면 프로그램 강제 종료된다.
외부 클래스에서 Activity의 Context에 접근해야 하는 경우
class foo {
val mContext : Context = this
}
* 내부 클래스의 경우 그냥 this@OuterCls
를 사용하면 된다.
이 글은
본 저작자 표시, 비영리, 동일 조건 변경 허락 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
본 저작자 표시
비영리
동일 조건 변경 허락
'Java Stack > Android' 카테고리의 다른 글
액티비티 : Activity life cycle, 백스택, singleTop (0) | 2018.05.20 |
---|---|
AlertDialog, Snackbar, Toast / String resource (0) | 2018.05.20 |
adb로 디버깅 (0) | 2017.12.29 |
onClick in XML vs. onClickListener (0) | 2017.12.29 |
Android Permission 정리 (0) | 2017.12.24 |