안드로이드 개발 질문/답변
(글 수 45,052)
고민입니다. List의 속도가 느립니다.
mStrings1 은 배열입니다.
list.setAdapter( new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings1));
이렇게 하면 속도가 무척이나 빠릅니다. 간단하게 그냥 layout도 안드로이드에서 제공해주는 것이고..그렇죠.
list.setAdapter( adapter );
이렇게 할 경우 속도가 느려집니다.
저기서 adapter는 제가 BaseAdapter를 확장한 것입니다.
확장한 adapter의 경우 layout도 직접 작성한 xml레이아웃을 따로 사용합니다. (text 및 이미지 등등을 넣어줘야 하는데 여기서는 딸랑 텍스트 2개만으로 테스트했습니다.)
아답타를 확장할 때 어떤 면을 고려해야 속도가 잘 나올까요?
Holder 클래스를 만들어서 변수들을 넣어놓고 tag를 사용해도 속도가 안나오기는 마찬가지입니다.
지금까지 그냥 쭈욱 작업해왔는데 속도때문에 자꾸 신경이쓰입니다.
최근 기종들에서 하면 속도가 빠르니 크게 차이가 없어 보이는데 조금 구기종이면 속도 차이가 느껴집니다.
2012.12.18 10:20:19
리스트 뷰에서 로딩속도는 뷰 재활용을 얼마나 효율적으로 하느냐에 달려있습니다.
적어놓으신 글을 보아하니 홀더를 이용하여 뷰를 재활용하신 것 같기는 합니다만..
정말 제대로 구현이 되어있는지는 소스를 보기 전까지는 알 수 없습니다.
또한 느린 부분일 수 있는 것을 말씀드리자면 이미지에 사용되는 이미지 로딩이 느리거나 사이즈가 클경우 버벅거릴 수 있습니다.
이미지 로딩을 하는 스레드를 만들고 데이터가 로딩되었을시 리스트를 변경해주는 방법을 사용하는 것이 나을 수도 있습니다.
이와 관련해서는 http://stackoverflow.com/a/3068012 를 참조해보시기 바랍니다.
이미지가 큰경우에는 썸네일 이미지나 줄인 이미지를 사용하는 방법도 있습니다.
PS. 제가 적어드린 방법이 아닌 다른 경우일 수도 있으니 어디까지나 참고만 하세요.
리스트 아이템 갯수가 얼마나 되길래 그러나요;;