본문 바로가기

PROGRAMING/Android

listView 항목에 Audio Albumart(thumbnail)을 지연 없이 나타내기 AsyncTask 호출 늦게 하기

AsyncTask를 상속 받아서 구현한 ThumbnailTask를 이용해서

listView  item 항목에 Thumbnail을 뿌려보았다.


하지만 빠른 스크롤시 bindView에서 item마다 ThumbnailTask를 생성한다면

자원 효율이 나쁠것으로 예상 했다.


그래서 Thread.sleep(200) 를 Thread를 생성해서 주고 현재 

현재 Item항목이 화면에 나타나는지 확인한 후 ThumbnailTask를 생성하도록 하였다.

성능 향상이 되리라 생각된다.


new Thread(new Runnable() {

@Override

public void run() {

LOG.d(CLASSNAME, "Runnable run");

try {

Thread.sleep(200);

} catch (InterruptedException e) {

e.printStackTrace();

}

LOG.d(CLASSNAME, "Runnable run  paste 0.2 seconds");

if(albumId!=holder.albumId){

LOG.d(CLASSNAME, "holder not exists screen");

return;

}

getActivity().runOnUiThread(new Runnable() {

@Override

public void run() {

LOG.d(CLASSNAME, "runOnUiThread run");

new ThumbnailTask(albumId, holder,mBitmapCache,mErrorThumbnailBitmap).executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, getActivity());

}

});

}}).start();



ThumbnailTask의 doInBackground 함수에 sleep(200)을 넣으려고 했으나

doInBackground에 sleep(200)을 넣을 경우 ThumbnailTask에 전달한 albumId값이 정상적으로

나타나지 않는 현상을 경험했다. 그래서 thumbnail이미지가 표시되지 않았다.