2016-09-16 3 views
0

내 활동을 닫고 파괴하도록 할 때 한 가지 질문이 있습니다.Android - 모든보기를 닫거나 null로 설정할 때 ViewGroup을 사용해야하나요?

내 Java 클래스에서 내보기를 참조 할 것입니다 (예를 들어, 내 Java 클래스는 화면에서 내 단추와 textviews를 참조합니다). View View에 모든보기 참조를 넣을 수 있습니까? 100 % 나중에 그들을 닫는 목적?

내 가난한 영어로 죄송합니다. 추가 설명해 드리겠습니다 :

내 버튼, 텍스트 뷰 및 기타 화면 항목에 대한 변수를 (자바 클래스로) 만들고 그룹에 넣으면 나중에 삭제할 수 있습니다. 그룹의 모든 자녀를 삭제하려면 Android에 알리시겠습니까? 또한 어쩌면 모든 루프 버튼 그룹을 사용하여 나중에 루프를 수행 할 수도 있습니다.

이것은 나쁜 습관입니까? 이 작업을 수행하는 것이 좋습니까? 아니면 ViewGroup의 의도가 아닙니까? 내가 ViewGroup에 대한 문서를 읽었지만 이것이 View Group에도 사용되는지에 대해서는 말하지 않습니다.

모든 해답을 제공해 주셔서 감사합니다. 나는 매일 배우고있다.

+1

올바르게 이해하면 View 객체에 대한 참조 유지로 인한 메모리 누수가 걱정됩니다. 이 올바른지? –

+0

예 메모리 누수가 걱정됩니다. 이 염려가 제 걱정입니다. –

답변

1

보기를 디자인 할 때 일반적으로 layout xml을 사용합니다. Activity의 onCreate()에로드됩니다. 따라서 레이아웃 XML에서는 LinearLayout, RelativeLayout, FrameLayout 등의 레이아웃 관리자를 사용해야합니다. 모두 ViewGroup의 하위 항목입니다. 따라서 기본적으로 모든보기는 ViewGroup에 이미 포함되어 있습니다.

파괴에 관한 질문과 관련하여보기 및 해당 하위보기를 유지하는 특별한 경우가없는 경우 활동의 기본 구현은보기를 파괴하고 가비지 수집하도록 처리합니다.

onDestroy() funtion의 문서 참조를 살펴보고 onDetachedFromWindow() 메서드를 살펴볼 필요가 있습니다.

특수한 경우에는보기가 그대로 유지되며 onDetachedFromWindow()을 무시하면 해당보기를 해제하기에 적합합니다.

+0

Adil 감사합니다. 이것은 나를 찾는 이해를 준다. 버튼과 다른 뷰가 이미 ViewGroup의 하위 노드라는 것을 알지 못했습니다. 나는 새로운 그룹을 만들지 않을 것입니다, 왜냐하면 아무 이유없이 너무 많은 참조를 가지고 있기 때문입니다. 다시 감사합니다. –

+1

위대한, 안드로이드 개발에 오신 것을 환영합니다, 그리고 행복 코딩! –