2013-10-14 2 views
0

나는 여전히 내 listview에서 더 나은 성능을 얻을 수있는 방법을 찾고있다. Google I/O 2009 비디오에서 본 것들 중 하나는 ViewHolder 사용의 성능이었습니다.Android ViewHolder 예/아니요?

http://www.youtube.com/watch?v=N6YdwzAvwOA

당신이 분 12시 viewHolder가 다른 사람에 대한 거대한 사용의 성능의 차이에서 볼 수 있듯이. viewHolder 기능을 구현하지 않는 것을 의미하는 "멍청한"방법을 사용하고있었습니다.

그래서 한 번 시도해 보았습니다.

viewHolder가 없으면 정확히 3 초 안에 20 개 항목 (작은 이미지, 제목, 설명 및 가격 (ImageView, TextView, TextView, TextView) 포함)을로드합니다.

동일한 객체를 사용하여 viewHolder 메소드를 성공적으로 구현했으며 ... 목록보기에서 20 개 항목을로드 할 때 정확히 3 초를 받았습니다.

나는이 시간을 최소한 절반으로 줄이길 기대하고있었습니다.

너희들은 어떻게 생각하십니까? 정상입니까?

+0

100 개가 넘는 항목으로 테스트하고 차이가 있는지 확인하십시오. – Raghunandan

+1

20 개 항목의 3 초가'findViewById()'가 아닌 다른 일을하는 데 대부분의 시간을 소비하고 작은 데이터 세트에 대한 뷰 홀더 패턴의 이점이 측정에 나타나지 않는 것처럼 들립니다. – laalto

+0

listview를 채우는 방법에 비동기 작업을 사용하고 있습니까? –

답변

2

ViewHolder는 처음로드시로드 속도를 향상시키지 않으므로 스크롤 속도가 향상됩니다. ViewHolder를 사용해도 어떤 경우에는 findViewById 메소드를 사용해야합니다. 보기를 재사용하고 내용을 편집하는 경우에만 성능이 향상됩니다. 이미지/텍스트 등.

예, 정상 속도가 아니므로 인플레이션 /로드 속도가 빨라집니다. 로드를 향상 시키려면 다른 기술을 사용해야합니다.

어떻게 뷰에 데이터를 제공합니까? 스크롤하는 동안 UIThread에서 일종의 "무거운 작업"을하고 있습니까?

+0

감사합니다. 위의 내 대답을보십시오. – user2742861

+0

나는 이것이 당신의 질문에 대답해야한다고 생각합니다 :) –

관련 문제