안녕하세요.
가지고있는 전체 사진을 보여주는 기능을 만들고 있습니다.
카톡의 이미지 선택화면과 거의 똑같은 기능이에요.
ContentResolver 를 사용해서 목록을 불러오고, GridView 로 화면에 표시합니다.
LruCache 와 AsyncTask를 이용해 비트맵 로드를 하고있고요.
그런데 천천히 스크롤 할때는 아무 문제 없이 잘 되는데
스크롤을 아주 빠르게 아래로 내리면 문제가 생겨서 도움 요청 드려요.
첫번째 문제는 느려지는 증상인데요
ListAdapter 의 getView 에서 LruCache에 데이터가 없는 경우 AsynkTask 로 비트맵을 로드 하는데요
이게 아주 빠르게 촤라락 나오게 되면 AsyncTask가 수십개가 한번에 실행이 되는것 같아요
로딩이 느려지는 증상이 있더라고요.
검색해보니 AsyncTask를 바로 종료시킬수는 없는것 같길래 flag를 하나 추가해서 중간에 끊을수 있도록 작업은 했지만
비트맵 로드하는 중간에 끊기는건 아닌것 같더라고요.
뭔가 해결 방법이 없을까요?
두번째 문제는 GridView 는 리스트 아이템을 재사용 하는것으로 알고있는데
A 이미지를 로드하도록 AsynkTask가 돌고있는 상황에서 스크롤을 빨리굴려서
로딩이 끝나기 전에 B 이미지를 AsyncTask가 요청해 버리면
스크롤을 멈추고 보고있는 상황에서 이미지가 휙휙 바뀌더라고요.
이부분도 현재 특별히 해결할 방법을 아직은 못 찾고 있는 상태입니다.
위 두가지 문제에 대한 해결책이나 조언 부탁드리겠습니다
감사합니다.