내 활동은 컨텍스트를 매개 변수로 필요로하는 AlertDialog를 만들려고합니다. 내가 사용하면 예상대로 작동합니다.
AlertDialog.Builder builder = new AlertDialog.Builder(this);
그러나 화면 회전과 같은 간단한 작업 중에도 액티비티가 파괴되고 다시 생성 될 때 메모리 누수 가능성으로 인해 "this"를 컨텍스트로 사용하는 것은 부적절합니다. A로부터 안드로이드 개발자 블로그에 관련 포스트 :
컨텍스트 관련 메모리 누수를 피하는 두 가지 쉬운 방법이 있습니다. 가장 분명한 것은 컨텍스트가 자신의 범위를 벗어나는 것을 피하는 것입니다. 위의 예는 정적 참조의 경우를 보여 주지만 내부 클래스와 외부 클래스에 대한 암시 적 참조는 똑같이 위험 할 수 있습니다. 두 번째 해결책은 응용 프로그램 컨텍스트를 사용하는 것입니다. 이 컨텍스트는 애플리케이션이 활성 상태이고 활동 수명주기에 의존하지 않는 한 지속됩니다. 컨텍스트가 필요한 오래 지속되는 오브젝트를 유지하려는 경우 애플리케이션 오브젝트를 기억하십시오. Context.getApplicationContext () 또는 Activity.getApplication ()을 호출하여 쉽게 얻을 수 있습니다.
그러나 예외를 던지기 때문에 컨텍스트로 허용 AlertDialog()
되지 않는 getApplicationContext()
또는 getApplication()
허용되는 경우 :
"창을 추가 할 수 없음-토큰 널이 응용 프로그램 용이 아닙니다"
따라서 공식적으로 사용하는 것이 좋지만 Activity.getApplication()
광고 된대로 작동하지 않기 때문에 이것이 실제로 "버그"로 간주되어야 합니까?
짐