2012-07-08 2 views
4

Android 앱에 컨텍스트를 저장하는 방법은 무엇입니까? Activity (데이터베이스 어댑터 등) 외부에서 일반적인 클래스에서 사용해야하는 경우가 많습니다.컨텍스트를 저장하는 방법?

정적 필드에 컨텍스트를 저장하려고했지만 메모리 누수가 발생할 수 있습니다.

아마도 기존 클래스의 Context를 확장하고 getApplicationContext()을 호출하면 더 좋을 것입니까?

+2

가장 좋은 방법은 (Context가 필요한) 기존 클래스의 모든 생성자에 'Context' 변수를 보내고 해당 클래스의 private 멤버로 저장하는 것입니다. –

답변

2

좋은 방법은 생성자에 Context을 전달하는 것입니다. 모든 샘플 코드에서 컨텍스트가 사용자 정의 클래스에 전달되어 미래 사용을위한 인수로 볼 수 있습니다.

fedorvlasov's LazyListAdapter (웹에서 이미지를 지연로드하는 경우 매우 유용합니다)에서 생성자가 다음과 같이 표시됩니다. public LazyAdapter(Activity a, String[] data)

이렇게하면 활동을 벗어나서 사용할 필요가있을 때마다 이미 필드로 저장되어 있습니다.

이 작업을 수행하는 다른 방법 (권장하지 않음)은 응용 프로그램 Context 인 정적 필드를 사용하는 것입니다.

public static final Context = getApplicationContext(); 

당신은 이것을 실행 활동에 넣었습니다. 그리고 거기에 당신은 응용 프로그램의 수명 전체에 걸쳐 응용 프로그램 컨텍스트에 접근 할 수 있습니다.

+0

예, 이제 정적 필드를 사용합니다. 메모리 누수가 발생할 수 있습니까? – bvitaliyg

+1

@bvitaliyg 예, 그렇게 할 수는 없습니다. –

+0

@AlexLockwood 옵션이라면 알아 두어야합니다. 그러나 나는 또한 추천하지 않는다고 덧붙였다. – thepoosh

관련 문제