ArrayList에 있는 URL이미지 주소를 List에 뿌리는 겁니다.
그런데.... 너무 느립니다.
아래의 메쏘드를 봐주시고... 뭐가 문제인지.. 왜 속도가 안나는지... 좀 봐주시기 바랍니다.
String url;
while(ArrayList만큼)
url = ArrayList[index].toString(); //http:~~~.png 문자열이 있음
img.setImageBitmap(urlTobitmap(url, 4));
public static Bitmap urlTobitmap(String _photoURL, int _size) {
URL url = null;
Bitmap bitmap = null;
try {
url = new URL("_photoURL);
HttpGet httpRequest = null;
try {
httpRequest = new HttpGet(url.toURI());
} catch (Exception e) {
e.printStackTrace();
}
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
InputStream instream = bufHttpEntity.getContent();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = _size;
bitmap = BitmapFactory.decodeStream(instream,null,options);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
일종의 튜닝을 부탁드리는 겁니다.
웹이미지를 이렇게 많이뿌리는 앱을 본적이 없어서 지금의 속도가 정상인지 아닌지 모르겠습니다만...
한 페이지에 약 30개의 웹 이미지를 뿌리는데 4.5초정도 거릴는듯 합니다.
고수님들 한번 확인 부탁 드립니다.
쓰레드를 활용하지 않는다면 많이 느릴꺼예요...
구글에서 android Image LazyLoading을 검색해서 찾아보세요.
AsynkTask를 활용해서 이미지를 다운 받는건데 도움이 되실꺼예요.
음.. 제가 쓰레드를 잘못 이해하고 있나요?
단순히 다이얼로그 띄우는데만 쓰고 있어서요...
위의 경우 스레드를 쓰면 제가 처리한 방법은..
이미지 로딩중.... (프로그래스바 빙글빙글~!)
4.5초 후에 이미지 모두 표시.
이렇게 되거든요...
먼저 로드된 이미지는 뿌리고 나머지는 계속 읽게 해야 할거 같은...
자바기초지식 부족인듯 ㅠ.ㅠ
참고 할만한 사이트좀 알려주세요~!
Lazy Loading의 묘미는 미리 어레이의 공간을 확보해 놓고 비동기식으로 이미지를 다운 받아 미리 지정한 공간에 이미지를 넣는건데요.
이런식으로해서 속도 향상을 가져오는거죠. 여러가지 구현 방법들이 구글링을 통하면 있지만..
http://androiddiscuss.com/1-android-discuss/72498.html
요기가 가장 심플한거 같네요..




urlTobitmap 메소드에서 try안에 또 try가 있는데 안에있는 try는 제거 하시고 바깥쪽 try의 catch부분을 추가 하는게 나을거 같습니다.
나머지는 직접 테스트를 해 봐야 하는데.. 시간적 여유가 없네요.