2011-07-28 3 views
87

사이의 차이 무엇입니까 :getApplicationContext(), getBaseContext(), getApplication()의 getParent()

  1. getApplicationContext()
  2. getBasecontext()
  3. getApplication()
  4. getParent()

수 하나의 간단한 예제로 자세히 설명해 주시겠습니까?

+1

같은 것을 정의하는 http://stackoverflow.com/questions/1026973/android-whats-the-difference-between-the-various-methods-to-get-a-context를 방문하십시오. http :// /developer.android.com/reference/android/content/Context.html –

답변

29

getApplicationContext() 응용 프로그램 컨텍스트는 응용 프로그램과 연결되어 있으며 수명주기 내내 항상 동일합니다.

getBasecontext()을 사용해서는 안되며 액티비티와 연결된 액티비티 대신 을 사용하고 액티비티가 삭제되면 삭제할 수 있습니다.

+14

getApplication() 및 getParent()에 대한 설명 –

97

getApplicationContext() 응용 프로그램 컨텍스트는 응용 프로그램과 연결되어 있으며 수명주기 내내 항상 동일합니다.

getBasecontext()을 사용해서는 안되며, 활동과 연관된 Context 대신 활동을 파괴 할 때 파괴 될 수 있습니다.

getApplication()은 활동 및 서비스에서만 사용할 수 있습니다. 현재 Android 활동 및 서비스 구현에서 getApplication()getApplicationContext()이 동일한 객체를 반환하더라도 항상 특정 공급자 구현과 같은 보장은 없습니다. Manifest에 등록한 Application 클래스를 원할 경우 getApplicationContext()을 절대 호출해서는 안되며 테스트 프레임 워크에서 분명히 경험 한 응용 프로그램 인스턴스가 아니기 때문에 응용 프로그램에 캐스트하면 안됩니다.

getParent()은 현재보기가 자식 인 경우 활동의 객체를 반환합니다. 즉, 하위 내에서 호출 될 때 하위보기를 호스팅하는 활동 객체를 반환합니다.

+15

언급 한 것처럼 getBaseContext()를 사용하면 안됩니다. 중요하지 않은 경우 그 이유는 무엇입니까? 그것은 코딩에 있으며 그 주요 장점은 무엇입니까. –

+0

매우 구체적인 상황에서 getBaseContext()를 사용해야합니다. 여기에 아주 좋은 설명이 있습니다 - https://medium.com/@ali.muzaffar/which-context-should-i-use-in-android-e3133d00772c – lomza

관련 문제