차이

2012-07-23 6 views
2

가능한 중복 : 내가 this, ClassName.this, getApplicationContext() 또는 myContext를 사용 사이의 차이가 무엇인지 알고 싶어
Android - what's the difference between the various methods to get a Context?차이

?

아래의 토스트에서 컨텍스트로 사용할 때의 효과는 무엇입니까?

문맥에 대한 자세한 설명을 가르쳐 줄 수 있습니까? 나는 Romain Guy의 게시물 here을 읽었습니다. 어쩌면 몇 가지 예가 도움이 될 수 있습니다.

+1

예. 나는 그렇게 생각한다. .. 이것을 보지 않았다. 고마워요 @ 앤드로! – yojoannn

+0

나는 그들의 결론에 동의하지 않는다. :-) 나는 그것이 작동 할 때마다 Activity 컨텍스트를 사용해야하고 필요할 때만 Application 컨텍스트를 사용하여 캡슐화하고 개체의 수명을 관련성이 가장 작은 범위로 제한해야한다고 생각한다. – Sparky

답변

1

응용 프로그램 컨텍스트는 응용 프로그램의 수명주기 및 활동 컨텍스트에서 활동의 라이프 사이클과 연결됩니다. 그래서 각각은 그 범위를 가지고 있으며, 그 수준에서 정보를 수집하는 데 익숙해야합니다.

일반적으로 수명주기가 현재 활동과 다른 컨텍스트가 필요하지 않으면 항상 활성 상태 컨텍스트를 사용해야합니다.

메모리 누수로 이어질 수있는 것은 응용 프로그램 컨텍스트의 사용이며, 가비지 수집되어야하는 개체에 바인딩하지만이 관련 특성 (응용 프로그램 컨텍스트)을 유지하면 수집되지 못하게됩니다.

1

ActivityApplication은 모두 Context 클래스에서 파생됩니다. 따라서 코드가 Activity 또는 Application 클래스의 일부일 때 this을 Context 객체 대신 사용할 수 있습니다. 이 중 하나 (예 : Fragment) 외의 경우에는 getActivity()으로 전화하여 동봉하는 활동을 얻고 (컨텍스트로 사용)이를 수행 할 수 있습니다. getApplicationContext()는 Activity가 자신보다 Context를 더 많이 얻는 방법입니다. Activity의 수명이 끝난 곳에 Context를 사용해야하는 경우 (예를 들어 장기 실행 백그라운드 스레드에 전달하는 경우)이 기능이 필요할 수 있습니다.

아마도 토스트에 응용 프로그램 컨텍스트가 필요하지 않습니다. 하지만, 토스트를 사용하면 시작한 곳에서 활동을 나가더라도 토스트가 계속 보이고 충돌을 일으키지 않아야합니다.