2017-10-13 34 views
1

액티비티를 사용할시기와 애플리케이션 컨텍스트를 사용할시기 (예 : on this SO post)에 대한 몇 가지 토론을 읽었습니다.Toast.makeText() - 액티비티 또는 애플리케이션 컨텍스트

Toast.makeText() 메서드에 대한 활동 또는 응용 프로그램 컨텍스트 사용의 의미에 대해 궁금합니다.

상황 : : 사용하는 컨텍스트

문서는 간략 매개 변수 context에 대해 말한다. 일반적으로 응용 프로그램 또는 활동 개체. 토스트의 기간은 활동의 라이프 사이클에 바인딩 된 활동 컨텍스트를 사용하는 경우

내 질문

  • 이다?
  • 메모리 누수가 심각한 문제입니까? 그들은 축배의 기간에 의해 제한되는 것처럼 보인다.

그 밖의 무엇을 고려해야합니까?

+1

메모리 누수가 심각한 문제입니다. 메모리를 낭비하는 경우 메모리가 충분하지 않을 수 있습니다. – Zoe

답변

4

나는 단지 Application 컨텍스트를 사용합니다. Activity 컨텍스트를 사용하면 Toast가 표시 될 때까지 활성 상태가 지속되어 가비지 수집을 몇 초 지연시킬 수 있습니다.

활동 컨텍스트를 사용하는 경우 활동주기에 연결된 토스트의 지속 시간이 필요합니까?

나는 소스 코드를 보지 않았지만 반대라고 말하면 토스트가 표시 될 때까지 활동 참조가 유지됩니다.

메모리 누수가 심각한 문제입니까?

예! 이 경우 활동에 대한 참조가 결국 가비지 수집되므로 영원히 유출되지 않습니다. ApplicationContext은 몇 초 동안 엄격하게 필요한 것보다 많은 메모리를 사용하므로 더 안전합니다. 그리고 모든 경우에 여기에 ApplicationContext을 사용하는 것이 진짜 단점이 아닙니다.

+1

답변 해 주셔서 감사합니다. 액티비티 컨텍스트를 사용하는 유일한 이유는 토스트의 수명이 액티비티 수명에 연결되어있는 경우였습니다. 그게 사실이 아닌 것 같아, 나는 완전히 동의한다. –