2014-04-29 2 views
1

나는 컨텍스트 인식 적응 형 GUI 분야에서 일하고 있으며, 주어진 조건이 참일 때 GUI를 적용하려고한다. GUI를 적용하기 위해 레이아웃 XML로 각 가능한 레이아웃을 가지고 있으며, 적응할 때 새로운 레이아웃을로드하고 새로운 뷰 그룹을 기존의 새 UI로 이동하여 새 뷰 그룹을 기존의 뷰 그룹과 병합합니다.android.os.MessageQueue 메모리 누출?

비록 몇 가지 이유가 있지만 android.os.MessageQueue 인스턴스가 메모리를 확보하고 있고 화면이 변경 될 때마다 메모리가 해제되지 않습니다. 액티비티를 다시로드하지 않고 응용 프로그램 컨텍스트 만 사용하기 때문에 GUI를 처음 레이아웃으로 다시 변경할 때 메모리가 해제되지 않는 이유를 알 수 없습니다.

나는 MessageQueue 및 Looper와 관련된 다른 질문을 봤지만 왜이 개체가 커지는 지 이해할 수 없습니다. 어떤 사람이 제발 도와 주실 수 있습니까?

업데이트 : 나는 내 문제는 내가 MessageQueue가 실행 말도없이 상황에서 각각의 뷰 그룹을 복용 하였다 생각 내 문제

를 해결했다 생각합니다. 따라서 Views가 이 된 후에도이되면 메시지가 처리되지 않습니다. 컨텍스트에서 가져 오기 전에 ViewGroup에서 removeAllViews를 호출하면 문제가 해결됩니다.

+0

비슷한 문제를했다가 : 1. EditText와 함께 사용자 정의 레이아웃 추가 – GregoryK

답변

0

은 (질문의 저자 솔루션을 언급 - 그냥 몇 가지 세부 사항을 추가 할)

비슷한 문제가 있었다 :

  1. 활동 레이아웃 위해 LayoutInflater로 팽창보기 그룹을 추가합니다. 보기 그룹 활동/대화

결과를 다시

  • 돌립니다 장치를 (누설이 단계없이 재현하지 않았다) 글고에게 글고 치기는 소프트 키보드를 엽니 다
  • 초점이 포함되어 있어야합니다 누수가 발생하고 키보드가 관련되어있는 것처럼 보입니다. 그 메모리 누수를 피하기 위해 여러 가지 방법을 시도했습니다.

    솔루션 :들의 OnDestroy에서 전화에 * removeAllViews는 "() 도움이

    누출 쉽게 LeakCannary

    에 의해 여기에 관련된 문제가 발견되었습니다. EditText causing memory leak