안녕하세요 ~
UI를 구성할때 findViewById를 주로 이용하는데요.
내부 로직을 예상해보면 레이아웃 파일을 파싱해서 특정 컨테이너에 넣고 순회 알고리즘을 돌아 아이디에 해당하는 뷰를 리턴할텐데요.
저번에 안드로이드 블로그에서 보니깐 findViewById의 효율성이 떨어진다고 했던거 같습니다.
1. findVIewById의 내부로직에 관련해서 아시는분 계신가요 ?
2. findViewById말고 다른것을 사용하는식으로 효율성을 개선할만한 방법이 있을까요 ?
감사합니다.
1. 일반 뷰일 경우 findViewById는 자신이 맞는지만 확인합니다.
ViewGroup일 경우 자신의 childView 중에 해당 id가 있는지 확인합니다.
View와 ViewGrop 소스 보시면 간단하게 짜여져 있습니다.
2. findViewById 매번 for문을 돌면서 뷰를 검사하죠. 그래서 변수로 받아서 바로 접근하게 사용하죠.
맨 처음 한 번은 접근하기 위해 findViewById 메소드를 사용할 수 밖에 없습니다.
그 후에는 변수로 바로바로 접근하는 것입니다.
그래서 아답터에서 ViewHolder 패턴을 자주 쓰는 것 입니다.